Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
5
DevTest Solutions - Home
Date:
22-Jul-2016
22-Jul-2016
3/2016
Table of Contents
Release Notes ........................................................................................... 43
New Features and Enhancements ............................................................................................................ 43
Application Test ................................................................................................................................... 45
Secure Prefixes in JSON Assertions .......................................................................................... 45
Convert Large Data Data Set to CSV File .................................................................................. 45
JSON Path Filter Enhancement ................................................................................................. 45
Read a File (Disk, URL, or Classpath) Step Does Not Clear Cache .......................................... 46
HP ALM Plugin for DevTest 64-Bit ............................................................................................. 46
New Report Type in DevTest Workstation for Rally Test Reports ............................................. 46
ActiveMQ Direct ......................................................................................................................... 47
Service Virtualization ........................................................................................................................... 47
Add Upload and Deploy Service Functionality to the VSE Monitor ............................................ 47
Add CICS Support to DevTest Portal ......................................................................................... 47
Add Manage Copybook Bundles to DevTest Portal ................................................................... 47
Continuous Application Insight ............................................................................................................ 48
CA API Management Integration ............................................................................................... 48
Streamlined Creation of Virtual Services for JMS and WebSphere MQ .................................... 48
Data-Driven Baselines and Parameterization ............................................................................ 48
Import Recorded Transactions from Command-Line ................................................................. 48
Add Date/Time Stamps to Transactions on Shelf ...................................................................... 48
Associate POI (Pin) with Transactions on Shelf ......................................................................... 49
Add Filter to Pick Transactions and Use in the Advanced Shelf ................................................ 49
Export Reports to .CSV File Format ........................................................................................... 49
Add VRS Support for Create Artifacts from Agent ..................................................................... 49
Mainframe - Mainframe Agents Transactions Visualization ....................................................... 49
Mainframe - Update PDF Generation ........................................................................................ 50
Mainframe - Configure MF Agents View Portal .......................................................................... 50
Mainframe Transactions for Request/Response Pairs ............................................................... 50
Mainframe Transactions for VSE with VRS File ......................................................................... 50
Option to View Intercepted Java Methods Only ......................................................................... 50
Show Broker Errors in UI ........................................................................................................... 51
Agent Online Notification Delay ................................................................................................. 51
Create Stitching Rules for Java Agent from the Portal ............................................................... 51
Remove the POI from the Transactions in a Recording ............................................................. 51
Visual Indicator to Identify Agent/Broker Version Mismatch ...................................................... 51
User Log in Activity Recording ................................................................................................... 52
Modify Key/Value Pairs in Configuration File ............................................................................. 52
Unable to Execute a Test Suite with a Startup Test Using ANT Build ....................................... 62
Unable to Rename the Read Properties from a File Step .......................................................... 62
Security Gap on HTTP/HTML Request Steps ............................................................................ 62
Service Virtualization ........................................................................................................................... 62
Duplicate Transactions in a VSI ................................................................................................. 62
Performance Issues ................................................................................................................... 62
Adding a "Create Property Based on Surrounding Value" Filter Causes VSM Not to Open ...... 62
Portal VSI Issue ......................................................................................................................... 62
Long VSI Processing Time ......................................................................................................... 63
The Parse HTTP Header Cookies Filter Cannot Save Multiple Properties in Some Conditions ....
63
Virtual Service via Recording - Baseline Test Endpoint Errors .................................................. 63
NIO Port High CPU .................................................................................................................... 63
JSON and XML Virtual Services Not Working ........................................................................... 63
Portal Will Not Load Service ...................................................................................................... 63
Image Validation Memory Leak .................................................................................................. 64
IBM WebSphere MQ Fixes ........................................................................................................ 64
ServiceImageManager Jars ....................................................................................................... 64
URL Decoder Exceptions in VSE Logs ...................................................................................... 64
Healing Mode Fix ....................................................................................................................... 64
Error During Playback of IMS VS ............................................................................................... 64
Create VS from Swagger Causes "LinkedHashMap Cannot Be Cast to String" Error ............... 65
Create Service by Recording Gets Error After Deploy ............................................................... 65
Cannot Open a Virtual Service from Portal ................................................................................ 65
VSM/VSI Taking Very Long to Respond After Deploying .......................................................... 65
Forward Proxy Chaining - SSL ................................................................................................... 65
JMS VSE: Exception Sending Response to Unknown Request ................................................ 65
Forward Proxy Chaining With DevTest VSE Over SSL ............................................................. 65
RabbitMQ Issue with Responses ............................................................................................... 66
Continuous Application Insight ............................................................................................................ 66
Analyze Transactions Window ................................................................................................... 66
REST Transactions with URL Query Parameters ...................................................................... 66
Escape Characters in JSON Strings .......................................................................................... 66
General/Common Components ........................................................................................................... 66
Not Able to Stage a Test ............................................................................................................ 66
Report Deletion Not Logged in Audit Log ................................................................................... 66
Cannot Change the Execution Mode for VSE Services in Portal with Non-English Language
Setting ........................................................................................................................................ 66
Apache-Jakarta Collections Vulnerability ................................................................................... 67
Strange Japanese Translation in the Performance Report ........................................................ 67
Additional Documentation on Upgrading Enterprise Dashboard Database ............................... 67
Cycle Numbers Are Incorrect ..................................................................................................... 67
IBM MQ Native Step Error ......................................................................................................... 67
DevTest Portal Fails to Show Report for Test with Custom Events ........................................... 67
lisa.tmpdir is Not Being Read in lisa.user.properties .................................................................. 67
IBM MQ Native Channel Connections ....................................................................................... 67
Enterprise Dashboard MalformedURLException: unknown protocol: ssl ................................... 68
LISA Invoke with MAR (Suite) .................................................................................................... 68
Report URL for New Reporting Console .................................................................................... 68
Enterprise Dashboard How to Change TCP Name with SSL ................................................. 68
Coordinator Running OOM When Running Tests ...................................................................... 68
Silent Install Not Working for Install That Is Connecting to an Existing 9.1.0 DevTest Enterprise
Dashboard .................................................................................................................................. 68
Reading the Config File at the Time of the Use of a Subprocess .............................................. 68
OOM Exception When Displaying the Registry Details Panel ................................................... 69
DevTest Portal Taking 20 Minutes to Become Available ........................................................... 69
Known Issues ............................................................................................................................................ 69
Searching for Long Strings in a Virtual Service ................................................................................... 69
Data-Driven Virtual Services ............................................................................................................... 69
Updating Virtual Services Using Service Configuration in Preview Mode ........................................... 70
Changes Made to Virtual Service in DevTest Workstation are not Saved in DevTest Portal ............. 70
Mobile Testing and Android SDK Tools 25 ......................................................................................... 70
Preview Features ...................................................................................................................................... 70
Enable and Disable Preview Features ................................................................................................ 71
End of Service Announcement .................................................................................................................. 71
End of Life Features .................................................................................................................................. 72
End of Life Features as of DevTest 9.5 ............................................................................................... 72
End of Life Features as of DevTest 9.0 ............................................................................................... 72
End of Life Features as of DevTest 8.5 ............................................................................................... 72
End of Life Features as of DevTest Solutions 8.2 ............................................................................... 72
End of Life Features as of DevTest Solutions 8.0.2 ............................................................................ 73
End of Life Features as of DevTest Solutions 8.0 ............................................................................... 73
End of Life Features as of LISA 7.5 .................................................................................................... 73
End of Life Features as of LISA 7.1 .................................................................................................... 74
End of Life Features as of LISA 6.0.9 ................................................................................................. 74
DevTest Portal Functionality ..................................................................................................................... 74
CA Application Test ............................................................................................................................. 75
CA Service Virtualization ..................................................................................................................... 75
DevTest Common Components .......................................................................................................... 75
Third Party Acknowledgments ................................................................................................................... 76
Installing .................................................................................................... 84
Preinstallation ............................................................................................................................................ 84
Using the HP Quality Center Client to Run Test Cases ........................................................... 157
Set Up the SAP System Landscape Directory .................................................................................. 157
Manually Register DevTest with SLD ....................................................................................... 158
Import the DevTest SLD XML File ........................................................................................... 158
Configure CA Agile Central ............................................................................................................... 159
Setting Up the Mobile Testing Environment ............................................................................................ 159
Android Applications ......................................................................................................................... 160
iOS Applications ................................................................................................................................ 160
Additional Considerations ................................................................................................................. 161
Mobile System Requirements ........................................................................................................... 161
Supported Operating Systems for Mobile Testing ................................................................... 162
Supported Mobile Operating Systems ..................................................................................... 162
Hardware Requirements for Mobile Testing ............................................................................. 162
Xcode Requirements for Mobile iOS Testing ........................................................................... 162
Supported Browsers for Mobile Testing ................................................................................... 162
Setup Steps for Mobile Testing ......................................................................................................... 163
Download the Latest Version of Android Studio ....................................................................... 163
Define ANDROID_HOME ........................................................................................................ 163
Configure the Android SDK Manager ....................................................................................... 164
Create an Android Virtual Device ............................................................................................. 165
Install Xcode (Mac Only) .......................................................................................................... 166
Prepare IPA Signing (Mac Only) .............................................................................................. 167
Enable UI Automation (Mac Only) ............................................................................................ 168
Remote Debugging on iOS Safari (Mac Only) ......................................................................... 168
Set Up Windows Testing for iOS Applications ......................................................................... 169
CA MAA Recording .................................................................................................................. 170
Using Genymotion ............................................................................................................................. 174
Managing Genymotion Devices ............................................................................................... 175
Define VBOXMANAGE_CMD .................................................................................................. 175
Installing DevTest Solutions with a Silent Install ..................................................................................... 176
Sample response file ......................................................................................................................... 177
Docker Containers ................................................................................................................................... 177
Docker Prerequisites ......................................................................................................................... 178
Connecting to Oracle Databases in Docker Containers .................................................................... 178
Build Baseline Docker Images .......................................................................................................... 178
Docker Images .................................................................................................................................. 179
Example ................................................................................................................................... 180
Docker Commands to start DevTest components in their own containers ....................................... 180
Starting Enterprise Dashboard Container ................................................................................ 180
Starting Registry Container ...................................................................................................... 180
Starting Coordinator Container ................................................................................................ 180
Starting Simulator Container .................................................................................................... 180
Error at startup: Error occurred during initialization of VM. Could not find agent library in
absolute path... ....................................................................................................................... 1375
Agent exits immediately (or shortly after starting the process). ............................................. 1376
Agent exits with the message "GetEnv on jvmdi returned -3 (JNI_EVERSION)". ................. 1376
Agent exits with the message "UTF ERROR" ["../../../src/solaris/instrument
/EncodingSupport_md.c":66]: ..." ........................................................................................... 1376
Agent hangs or throws numerous exceptions at startup (LinkageErrors, CircularityErrors, and so
on). ......................................................................................................................................... 1376
Agent throws java.lang.VerifyErrors or hot swapping has no effect. ...................................... 1376
Agent starts but the consoles or broker cannot see the agent. .............................................. 1377
Agent causes some operations to time out. ........................................................................... 1377
java.lang.NoClassDefFoundError on com/itko/lisa/remote/transactions/TransactionDispatcher.
class ....................................................................................................................................... 1377
Security-related exceptions are thrown when the agent is enabled. ...................................... 1377
Abnormal resource consumption (CPU, memory, file handles, ...). ....................................... 1377
I can see the agent started, but CAI data is missing or incomplete. ...................................... 1378
I turned on Java VSE recording or playback, but VSE does not receive any requests from the
agent. ..................................................................................................................................... 1379
Other issues with Java VSE. .................................................................................................. 1379
Ticket functionality is not working. .......................................................................................... 1379
DevTest is configured to use an IBM DB2 database. In DevTest Portal, I selected a JDBC node
in a path graph. The Statements and Connection Url columns are blank. ............................. 1379
Received the following exception: com.itko.lisa.remote.transactions.
TransactionSizeExceededException: could not XStream ... Serialization for this frame will be
disabled. ................................................................................................................................. 1380
The VSE log includes the following error: com.itko.lisa.vse.stateful.protocol.java.listen.
DefaultJavaPlaybackCallback - Timed out waiting on response. ........................................... 1380
DevTest CICS Agent ............................................................................................................................. 1380
Install the CICS Agent ..................................................................................................................... 1381
CICS Agent Storage Requirements ................................................................................................ 1386
CICS Exit Considerations ................................................................................................................ 1387
Coexistence with Other Exits ................................................................................................. 1388
DevTest CICS Agent Exit Behavior Summary ....................................................................... 1388
CICS Agent User Exits .................................................................................................................... 1388
ITKOUEX1 - DevTest CICS Agent Initialization Exit .............................................................. 1388
ITKOUEX2 - DevTest CICS Agent Termination Exit .............................................................. 1390
ITKOUEX3 - LISA CICS COMMAREA Consolidation Exit ..................................................... 1390
CICS Agent Operation .................................................................................................................... 1393
Starting the DevTest CICS Agent and Exits ........................................................................... 1393
Stopping the DevTest CICS Agent and Exits ......................................................................... 1393
Impact on Virtualized CICS LINK Commands ........................................................................ 1393
Impact on Virtualized CICS DTP/MRO Commands ............................................................... 1394
22-Jul-2016
42/2016
Release Notes
Note: This DocOps space includes documentation for DevTest Solutions 9.5 and 9.5.1.
Items in the release notes correspond to release 9.5 unless specifically identified as 9.5.1.
43/2016
44/2016
Application Test
Secure Prefixes in JSON Assertions
Updated the Ensure Result Equals and Ensure Result Contains assertions to handle secure prefixes
correctly.
Case Number: US89132
Updated the Following Pages:
Ensure Result Equals (see page 1565)
Ensure Result Contains (see page 1567)
22-Jul-2016
45/2016
Read a File (Disk, URL, or Classpath) Step Does Not Clear Cache
Two properties were added to allow you to specify the size and time duration to specify when the
cache is flushed for this step.
Case Number: DE138844
Updated the Following Pages:
Read a File (Disk, URL or Classpath) (see page 1873)
Local Properties File (see page 1750)
22-Jul-2016
46/2016
ActiveMQ Direct
Added JMS support for ActiveMQ direct connection factory.
Case Number: TA284305
Updated the Following Pages:
Third-Party File Requirements (see page 1446)
JMS Client Assets (see page 1592)
SSL Assets (see page 1605)
Service Virtualization
Add Upload and Deploy Service Functionality to the VSE Monitor
In DevTest Portal, added a button that lets you upload and deploy a virtual service to the
environment.
Case Number: US141204
Updated the Following Page:
Monitor Virtual Services (see page 784)
22-Jul-2016
47/2016
22-Jul-2016
48/2016
49/2016
22-Jul-2016
50/2016
22-Jul-2016
51/2016
22-Jul-2016
52/2016
22-Jul-2016
53/2016
You can also define parameters for this gesture to interrupt the swipe when specified conditions are
met within the table.
Updated the Following Page:
Modify Mobile Test Steps (see page 1948)
Added the Following Page:
Swipe Table Gesture (see page 1957)
22-Jul-2016
54/2016
General/Common Components
Self-Administration of Password
Added Change Password option to DevTest Portal.
Case Number: US64659
Updated the Following Page:
Update Preferences (see page 211)
Include Upgrade DDLs for Enterprise Dashboard and Registry in Installation Package
We now include upgrade DDLs for the Enterprise Dashboard and Registry.
Case Number: US73764
Updated the Following Page:
Upgrading DevTest (see page 181)
User/Role/Permissions Administration UI
Moved ACL administration functionality into DevTest Portal.
Case Number: F8606
Updated the Following Pages:
DevTest Portal (see page 204)
22-Jul-2016
55/2016
56/2016
22-Jul-2016
57/2016
Application Test
Reporting Issues
Fixed issues with the Test Metrics, Average Transaction Response, and Cycle Performance Summary
reports.
Case Number: DE177495
22-Jul-2016
58/2016
Service Virtualization
Performance Issue
Made changes to address performance issues.
Case Number: DE176568
General/Common Components
In-place Upgrade Problem with Sandbox Items
Fixed a bug where new sandbox features were not appearing when doing an in-place upgrade.
Case Number: DE186386
59/2016
60/2016
Application Test
Test Runner HTML Step Order
Update so that the step order in the HTML report is shown in correct order.
Case Number: DE132027, 00286415
Update Behavior of TestRunner for Suites to Return an Exit Code That Includes Count
of Both Aborted and Failed
Corrected the behavior of TestRunner for suites to return an exit code that includes count of both
aborted and failed tests.
Case Number: DE140459, 00205238
22-Jul-2016
61/2016
Unable to Execute a Test Suite with a Startup Test Using ANT Build
Fixed a problem where the user was not able to execute a test suite with a startup test using ANT
build.
Case Number: DE160992, 00362454
Service Virtualization
Duplicate Transactions in a VSI
Fixed the duplicate transactions that were created while recording.
Case Number: DE29586, 00227383
Performance Issues
Changes to suppress the property changed event that is generated by filters when the VSE logger is
not at INFO level and some code refactoring to improve performance.
Case Number: DE29592, 00205238
Adding a "Create Property Based on Surrounding Value" Filter Causes VSM Not to Open
Fixed an issue of metadata, attributes, and arguments on Request and Response objects not being
written out to .rsp files during design time of the VSM.
Case Number: DE29606, 00234552
22-Jul-2016
62/2016
The Parse HTTP Header Cookies Filter Cannot Save Multiple Properties in Some
Conditions
Made a change so that when parsing Set Cookie headers in HTTP/S tests we provide a set of
properties with your specified prefix for each valid cookie. These list the name, value, path, or
domain for each of the cookies, so multiple cookies with the same name but separate domains/path
will not collide any more. For compatibility reasons the old system where a property that is derived
from the cookie name would contain the value (but be over-ridden if multiple cookies had the same
name) is still in place. Note that we do not apply the same-source rule so that no information is lost
before you have the chance to operate on it.
Case Number: DE124641, 00275204
22-Jul-2016
63/2016
ServiceImageManager Jars
Addressed an issue where ServiceImageManager could not load anything from the hotdeploy
directory since 8.0.1, because the HotDeployClassloader was not loaded first before the protocol
information was loaded.
Case Number: DE129526, 00279563
22-Jul-2016
64/2016
22-Jul-2016
65/2016
General/Common Components
Not Able to Stage a Test
Fixed a problem when sometimes double quotes are not decoded while executing a script.
Case Number: DE82302, 00266423
Cannot Change the Execution Mode for VSE Services in Portal with Non-English
Language Setting
Corrected Portal behavior with non-English language setting.
Case Number: DE136376
22-Jul-2016
66/2016
DevTest Portal Fails to Show Report for Test with Custom Events
Fixed a problem with "Error 500 - Failed to get test's detailed info. null " in the DevTest Portal.
Case Number: DE143197, 00323658
67/2016
Silent Install Not Working for Install That Is Connecting to an Existing 9.1.0 DevTest
Enterprise Dashboard
Corrected an issue with the silent install process.
Case Number: DE159075
22-Jul-2016
68/2016
Known Issues
Searching for Long Strings in a Virtual Service
The virtual service editor in DevTest Portal includes a search field. If a string in the search field has
more than 35 characters, the string cannot be found. The total search query can exceed 35
characters, but each string must be fewer than 35 characters.
As a work-around, you can do a whole word search or can use a regular expression (for example,
mySuperLongSearchTerm.*).
22-Jul-2016
69/2016
Preview Features
This page describes the preview features that are available in the Sandbox for this release. We are
considering adding these features to the basic user interface. We are making them available for you
in the Sandbox to try and explore. Depending on your feedback and other factors, these features can
change or be removed in subsequent versions at any time.
22-Jul-2016
Featur Description
e
Documentation
CAI
Lets you analyze calls and transactions started from the browser.
Chrom
e
Extensi
on
70/2016
Update Transport
Protocols (see page 779
)
Update Data Protocols
(see page 780)
Unknown Transactions
(see page 767)
Edit Virtual Services
(see page 762)
22-Jul-2016
71/2016
22-Jul-2016
72/2016
22-Jul-2016
73/2016
Legacy messaging steps are supported in LISA 7.5, but we plan to remove these steps in a future
release. A new set of messaging steps that were introduced in LISA 7.5 replace these steps. For
more information, see the Migration Guide.
Driver-based JDBC virtualization is supported in LISA 7.5, but we plan to remove this feature in a
future release. Agent-based JDBC virtualization is the replacement for this feature. For more
information, see the Migration Guide.
22-Jul-2016
74/2016
CA Application Test
Create an API test case with request/response pairs
Manage API tests, created in DevTest Portal
Manage test cases, created in DevTest Workstation
Manage test suites, created in DevTest Workstation
Manage projects
Monitor tests
Choose a configuration and staging document while running tests and test suites
CA Service Virtualization
Virtualize a website (HTTP/S)
Virtualize a website (TCP)
Virtualize JDBC
Virtualize with Opaque Data Processing (ODP)
Virtualize using request/response pairs
Virtualize CICS activity
Data protocol handlers: REST, JSON
Create and manage copybook bundles
Manage virtual services (Service Image Editor)
Manage copybook bundles
Monitor virtual services
More Information:
22-Jul-2016
75/2016
22-Jul-2016
76/2016
Angular-typeahead 0.2.0
Angular-ui-grid 3.0.0
Angular-ui-layout 0.0.1
Angular-ui-codemirror 0.1.6
Angular-ui-router 0.2.10
Angular-ui-sortable 0.12.8
Angular-utf8-base64 0.0.5
Angular-xeditable 0.1.8
AngularJS 1.2.20
annotation-detector 3.0.3
Antlr 2.7.6
Apache Commons FileUpload 1.3.1
Apache Wink 1.1.1
Appium 1.4
Axiom 1.2.8
Axis 1.4
Balloon Tip for Java 1.2.1
bcprov1.51
Bean shell (bsh) 2.1.8
BlazeDS 4.0.0.14931
Bootstrap 3.2.0
Bouncy Castle 1.47
Bouncy Castle Crypto Provider for JDK 1.5
Bower-sockjs-client 1.0.3
c3po 0.9.2.1
cb2xml 0.94
Codemirror 4.3.0
22-Jul-2016
77/2016
78/2016
fastclick 1.0.2
Flexbuilder Pro 3.0
FlexLib 2.5
flywaydb 2.2.1
Font Awesome 4.2.0
FreeMarker 2.3.20
GeckoFX 1.9.1.0
Generex 1.0
geronimo-jms_1.1_spec-1.1.1.jar
GlazedLists 1.5.0
Google mvp4g 1.2.0
Google opensans version 8
Google Web Toolkit 2.3.0
grails-ziplet .3
The Grinder - J2EE Performance Testing
Guava r09
guice 2.0
GWT Hashcode Equals 0.1.0
GWT Server Library SL 1.1
H2 1.4.178
Hamcrest 1.3
highlight.js 8.2
HTMLDecoder 1.6.1
HttpAsyncClient 4.0.2
HttpClient 4.3.6
HttpComponents 4.0.1
IBM DB2 Driver for JDBC and SQLJ 10.5
22-Jul-2016
79/2016
80/2016
22-Jul-2016
81/2016
22-Jul-2016
82/2016
22-Jul-2016
83/2016
Installing
This section describes how to install DevTest Solutions and all required components. It also provides
information about upgrading from an earlier version.
Preinstallation (see page 84)
DevTest Installation Overview (see page 114)
Installing and Configuring DevTest Server (see page 119)
Installing DevTest Workstation (see page 135)
Installing the Demo Server (see page 142)
Verifying the DevTest Installation (see page 145)
Installing Integration Tools (see page 149)
Setting Up the Mobile Testing Environment (see page 159)
Installing DevTest Solutions with a Silent Install (see page 176)
Docker Containers (see page 177)
Upgrading DevTest (see page 181)
Migrating the SDK (see page 187)
Preinstallation
This section describes the steps to take before you install DevTest. It includes information about how
to plan for your installation, system requirements, the DevTest architecture, and how to download
the installers.
Read and understand this section before you begin the installation process.
84/2016
System Requirements
This page describes the system requirements for the operating system, database, Web browser, and
more. Review this page before you install DevTest Solutions.
85/2016
Java JDK
Products composing DevTest Solutions are Java applications. An Oracle JRE is included with each
operating system-specific installer (1.8.0_60 JRE including a tools.jar from the JDK) other than the
generic UNIX installer. IBM JRE Version 8 is also supported if you supply your own JVM (see page 87)
.
The minimum supported Java version for DevTest Workstation, DevTest Server, and VSE is Java 8
update 60.
This requirement is a DevTest-side requirement only. DevTest running in a Java 8 virtual machine
(VM) can be used to test applications on application servers running older or newer JREs.
The following table lists the support that is provided for various JDKs:
JDK
1.5
22-Jul-2016
DevTest
Workstation
Not supported
Not supported
Not supported
Supported
86/2016
Not supported
Not supported
Not supported
Supported
JDK
1.7
Not supported
Not supported
Not supported
Supported
JDK
1.8
Required for
run time
Required for
run time
Supported (WildFly
8.2 only)
Note: DevTest does not support IBM JRE Version 7, Oracle JRE 1.7, or OpenJDK.
22-Jul-2016
87/2016
Optionally, you can use this procedure with an installer for another platform to override the included
JRE. See Using DevTest Workstation with Your Java Environment (see page 132).
Note: DevTest supports IBM JRE Version 8. DevTest does not support IBM JRE Version 7,
Oracle JRE 1.7, or OpenJDK.
6. Extract the UnlimitedJCEPolicyJDK8 folder from the jce_policy-8.zip file. Move the following
JAR files from this folder to the JDK_HOME\jre\lib\security directory:
local_policy.jar
US_export_policy.jar
This action replaces the existing JAR files with the same names.
7. Copy the tools.jar file from the JDK_HOME\lib directory to the JDK_HOME\jre\lib\ext
directory.
cd$JDK_HOME\jre\lib\ext
22-Jul-2016
88/2016
7.
DevTest Solutions - 9.5
cd$JDK_HOME\jre\lib\ext
cp$JDK_HOME\lib\tools.jar.
8. If you are overriding the included JRE, perform the following steps after you install DevTest:
a. Set the LISA_JAVA_HOME environment variable. For example:
cd\usr\java\jdk1.8.0_65
pwd
exportLISA_JAVA_HOME=$PWD
b. Rename the jre directory under the DevTest installation directory to jre_default as
described in Using DevTest Workstation with Your Java Environment (see page 132).
Important: You may get the following error when starting Enterprise Dashboard:
C:\DevTest9\9.0.0.210\bin>EnterpriseDashboard.exe
JVMJ9VM007E Command-line option unrecognized: ${LISA_MORE_VM_PROPS}
The JVM could not be started. The maximum heap size (-Xmx) might be too large or an
antivirus or firewall tool could block the execution.
To correct the error, set the system environment variable LISA_MORE_VM_PROPS to Xmx512m
Note: The IBM JRE has been certified only on the AIX operating system.
4. If you are overriding the included JRE, perform the following steps after you install DevTest:
a. Set the LISA_JAVA_HOME environment variable. For example:
22-Jul-2016
89/2016
4.
a.
DevTest Solutions - 9.5
cd $JDK_HOME
pwd
exportLISA_JAVA_HOME=$PWD
b. Rename the jre directory under the DevTest installation directory to jre_default as
described in Using DevTest Workstation with Your Java Environment (see page 132).
Important: You may get the following error when starting Enterprise Dashboard:
C:\DevTest9\9.0.0.210\bin>EnterpriseDashboard.exe
JVMJ9VM007E Command-line option unrecognized: ${LISA_MORE_VM_PROPS}
The JVM could not be started. The maximum heap size (-Xmx) might be too large or an
antivirus or firewall tool could block the execution.
To correct the error, set the system environment variable LISA_MORE_VM_PROPS to Xmx512m
22-Jul-2016
90/2016
Note: The requirements that are listed here are intended as a guideline. For large load
environments, we recommend contacting Professional Services to assist with developing a
load generation environment to suit your needs.
22-Jul-2016
91/2016
By default, the DevTest Java Agent uses the same database schema as the registry. However, you can
configure the agent and the registry to use different database schemas.
Communication Requirements
Ensure that your firewall allows DevTest Solutions to send and receive network transmissions. The
functionality that DevTest Solutions provides requires access to network resources and will not work
properly if blocked by a firewall. Authorize DevTest Solutions applications.
Note: To implement secure communication, see Using SSL to Secure Communication (see
page 1484) and Using HTTPS Communication with the invoke APIs (see page 1489).
Communications to and from the DevTest ports must be opened in any relevant firewall. See the
following pages:
DevTest Server Default Port Numbers (see page )
DevTest Workstation Default Port Numbers (see page )
Demo Server Default Port Numbers (see page 1430)
Database Requirements
The following components store information in a database:
DevTest Server: The database is used for report results, which can be exported to other formats
as needed. The database is also used for access control (ACL).
VSE: The database is used for usage counts and legacy virtual service images.
CAI: The database is used for paths, including request and response data, SQL statements, and
application logs. The database is also used for tickets.
Enterprise Dashboard: The database is used for the DevTest Solutions Usage Audit Report data,
other registry information, historical event logs, and metrics.
Important! Enterprise Dashboard requires its own unique large database. The database
22-Jul-2016
92/2016
Important! If you are upgrading from an older version of DevTest and reusing the
database, the database user must have permissions to modify the schema in order to make
any schema and data changes necessary when migrating between the old and new
versions.
22-Jul-2016
93/2016
If your security policy does not permit this approach, the database administrator can manually create
the schema. The DDL files in the LISA_HOME\database directory contain SQL statements that can
serve as the basis for manually creating the schema. Provide this information to the database
administrator.
Note: For more information about the configuration of an external database, see Database
Administration (see page 1452).
Important! Registries and Enterprise Dashboards must each have a unique schema. Do not
point multiple registries at the same database schema.
For load and performance testing, tune the external database to ensure that it can support the
amount of data storage that DevTest requires.
The registry, coordinator, simulators, and any virtual service environments require high-performance
database access. Performance data is recorded directly to the database by these components. CA
recommends that the database be present within the same data center. Databases that are hosted
within a virtual machine are not recommended for general availability use.
DDL Files
The LISA_HOME\database directory contains the following DDL files for DevTest:
db2.ddl
derby.ddl
mysql.ddl
oracle.ddl
sqlserver.ddl
The LISA_HOME\database directory contains the following DDL files for the Enterprise Dashboard:
db2_enterprisedashboard.ddl
derby_enterprisedashboard.ddl
mysql_enterprisedashboard.ddl
oracle_enterprisedashboard.ddl
sqlserver_enterprisedashboard.ddl
For information about CAI, see Java Agent Database Schema (see page 1317).
22-Jul-2016
94/2016
Supported Browsers
DevTest includes the following web-based portals, consoles, and dashboards:
Enterprise Dashboard (http://hostname:1506/)
DevTest Portal (http://hostname:1507/devtest)
Forward Cars Demo Server (/localhost:3434/cars-app)
Demo Server (http://hostname:8080/lisabank/)
The DevTest Portal requires HTML 5. Therefore, the latest internet browser technology is required to
use the new web-based UI. The following internet browser versions support HTML 5:
Google Chrome 36
Mozilla Firefox 30
Apple Safari 7.0 (Mac)
Microsoft Internet Explorer 11
The recommended screen resolution for viewing the DevTest Portal is 1024 x 768.
Note: Browser support for recording Selenium Integration tests (see page 1937) is limited to
Mozilla Firefox 42 through 47. After you import these tests to DevTest, running the test
cases has been verified on Google Chrome, Mozilla Firefox 42 and 43, Apple Safari 7.0
(Mac), and Internet Explorer 10 and 11. Safari is not supported on Windows.
22-Jul-2016
95/2016
CAI Versions
The following table indicates when each product version was released:
Product
2014
2015
2016
DevTest 9.5
No
No
Yes
(from June)
DevTest 9.1
No
No
Yes
(from February)
DevTest 9.0
No
Yes
(from November)
Yes
DevTest 8.5
No
Yes
(from October)
Yes
DevTest 8.4
No
Yes
(from September)
Yes
DevTest 8.3
No
Yes
(from August)
Yes
DevTest 8.2
No
Yes
(from July)
Yes
DevTest 8.1
No
Yes
(from June)
Yes
DevTest 8.0.x
No
Yes
(from first half)
Yes
DevTest 8.0
Yes
(from December 12)
Yes
Yes
LISA 7.5.2
Yes
(from June 1)
Yes
Yes
(through June 1)
LISA 7.5.1
Yes
(from April 15)
Yes
Yes
(through April 15)
LISA 7.5
Yes
Yes
(through December 12)
No
LISA 7.1
Yes
Yes
(through September 16)
No
LISA 6.x
Yes
(through October 31)
No
No
LISA 5.x
Yes
(through April 20)
No
No
CAI Agents
The following table indicates when each agent was released:
22-Jul-2016
Agent
2014
2015
2016
Yes
Yes
Yes
96/2016
2014
2015
2016
Yes
Yes
Yes
Yes
(LISA +7.5.2)
Yes
Yes
2014
2015
2016
Oracle 1.8*
No
Yes
(DevTest +8.2)
Yes
(DevTest +8.2)
Oracle 1.7
Yes
Yes
Yes
No
Yes
(DevTest 8.x)
Yes
(DevTest 8.x)
Sun 1.6
Yes
Yes
Yes
Sun 1.5
Yes
Yes
Yes
Sun 1.4
Yes
(LISA 5.x, 6.x, 7.x)
Yes
(LISA 7.x)
No
IBM 1.6
Yes
Yes
Yes
IBM 1.5
Yes
Yes
(LISA 7.x)
Yes
(LISA 7.x)
Application Servers
The following table describes the application server support:
22-Jul-2016
Application Server
2014
2015
Yes
Yes
(LISA +7.x)
Yes
No
Yes
(DevTest 8.x)
JBoss AS 4.2
Yes
Yes
(LISA +6.1)
Yes
JBoss AS 7.3
No
Yes
(DevTest 8.x)
Yes
(DevTest 8.x)
No
Yes
(DevTest 8.x)
Yes
(DevTest 8.x)
WildFly 8.2
No
Yes
(DevTest +8.1)
Yes
(DevTest +8.1)
No
No
Yes
(DevTest +9.1)
Yes
(DevTest 8.x)
2016
97/2016
2014
2015
2016
Jetty 8
No
Yes
(DevTest 8.x)
Yes
(DevTest 8.x)
Jetty 9.1
No
Yes
(DevTest 8.x)
Yes
(DevTest 8.x)
Jetty 9.2
No
Yes
(DevTest +8.3)
Yes
(DevTest +8.3)
Yes
Yes
(LISA +6.1)
Yes
No
Yes
(DevTest 8.x)
TIBCO BW 5.x
Yes
Yes
(LISA +6.1)
Yes
TIBCO EMS
No
Yes
(DevTest 8.x)
Yes
(DevTest 8.x)
webMethods Integration
Server 9.6
No
Yes
(DevTest +8.3)
Yes
(DevTest +8.3)
webMethods Integration
Server 9.5
Yes
(LISA +7.
5.2)
Yes
Yes
webMethods Integration
Server 9.0
Yes
(LISA +7.
5.2)
Yes
Yes
webMethods Integration
Server 8.2
Yes
(LISA +7.
0.1)
Yes
(LISA 7.x)
Yes
(LISA 7.5.2)
webMethods Integration
Server 7.1
Yes
(LISA +7.
0.1)
Yes
(LISA 7.x)
Yes
(LISA 7.5.2)
Yes
Yes
Yes
(LISA 7.5.2 (LISA 7.5.2*, DevTest +8.0.1 (LISA 7.5.2*, DevTest +8.0.1
*)
*)
*)
Yes
(DevTest 8.x)
* Limited to the following protocols: EJB, JMS, REST, and Web service.
22-Jul-2016
Feature
2014
2015
2016
Exception
Yes
Yes
Yes
Logs
Yes
Yes
Yes
HTTP
Yes
Yes
Yes
Web service
Yes
Yes
Yes
REST
Yes
Yes
Yes
98/2016
2014
2015
2016
RMI
Yes
Yes
Yes
EJB
Yes
Yes
Yes
JDBC
Yes
Yes
Yes
JCA
Yes
Yes
Yes
JMS
Yes
Yes
Yes
WebSphere MQ
Yes
Yes
Yes
webMethods
Yes
Yes
Yes
TIBCO
Yes
(LISA +6.1)
Yes
Yes
CICS
Yes
Yes
Yes
SAP JCo
Yes
(LISA +7.1)
Yes
Yes
SAP IDoc
Yes
(LISA +7.5)
Yes
(LISA +7.5)
Yes
ERPConnect 3.0
Yes
(LISA +7.5.2)
Yes
Yes
Java
No
Yes
(DevTest +8.2)
Yes
(DevTest +8.2)
Virtualization Features
The following table indicates the support for various virtualization features:
Feature
2014
2015
2016
Yes
(DevTest
+8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest
+8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest
+8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
(DevTest
+8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
Yes
22-Jul-2016
99/2016
22-Jul-2016
Feature
2014
2015
2016
Yes
(LISA +7.
5.1)
Yes
(LISA +7.5.1)
Yes
Yes
(LISA +7.1)
Yes
Yes
(DevTest
+8.0)
Yes
(DevTest +8.0)
Yes
(DevTest +8.0)
No
No
Yes
(DevTest +9.1)
No
No
Yes
(DevTest +9.1)
Yes
Yes
(LISA +7.1)
Yes
Teradata 14.10
Yes
Yes
(LISA +7.5) (LISA 7.5 through
DevTest 8.4)
Yes
(LISA 7.5 through
DevTest 8.4)
Web HTTP
Yes
Yes
Yes
REST
Yes
Yes
Yes
Web services
Yes
Yes
Yes
EJB
Yes
Yes
(LISA +6.x)
Yes
JCA
Yes
Yes
(LISA +7.5)
Yes
JMS
Yes
Yes
(LISA +6.x)
Yes
WebSphere MQ
Yes
Yes
(LISA +6.1)
Yes
webMethods
Yes
Yes
(LISA +7.1)
Yes
TIBCO BW
Yes
Yes
(LISA +6.1)
Yes
CICS
Yes
Yes
Yes
SAP JCo
Yes
Yes
(LISA +7.1)
Yes
100/2016
2014
2015
2016
SAP IDoc
Yes
Yes
(LISA +7.5) (LISA +7.5)
Yes
ERPConnect 3.0
Yes
(LISA +7.
5.2)
Yes
Yes
Java
No
Yes
(DevTest +8.2)
Yes
(DevTest +8.2)
RMI
No
Yes
(DevTest +9.0)
Yes
(DevTest +9.0)
Baseline Features
The following table indicates the support for various baseline features:
Feature
2014
2015
2016
Web HTTP
Yes
(LISA +7.5.2)
Yes
Yes
Web Services
Yes
Yes
Yes
REST
Yes
Yes
Yes
REST (stateful)
Yes
(LISA +7.1)
Yes
Yes
RMI
Yes
Yes
Yes
EJB
Yes
(LISA +6.1)
Yes
Yes
EJB (stateful)
Yes
(LISA +7.1)
Yes
Yes
JMS
Yes
(LISA +6.x)
Yes
Yes
WebSphere MQ
Yes
Yes
Yes
webMethods
Yes
(LISA +7.1)
Yes
Yes
Yes
(LISA +6.1)
Yes
Yes
DevTest Components
When you install DevTest Server, the following products are installed:
CA Application Test
CA Service Virtualization
CA Continuous Application Insight
22-Jul-2016
101/2016
22-Jul-2016
102/2016
Required By
Required To
Enterprise
Dashboard
Registries
Start DevTest Solutions with the product license.
(All DevTest
Solutions products) Monitor enterprise activity.
Generate the Usage Audit Report.
Registry
All DevTest
Register DevTest Server and DevTest Workstation
Solutions products components. The registry is the central hub or engine for all
processes.
Collect usage data for the Usage Audit Report.
Portal
All DevTest
Start DevTest Portal.
Solutions products
Broker
CA Continuous
Coordinate Java agents.
Application Insight
(CAI)
Coordinator
Simulator
Virtual Service
Environment
(VSE)
CA Service
Virtualization
The following table indicates where to find more information about each process.
Process
Reference
Enterprise Dashboard
Registry
Portal
Coordinator
Simulator
Workstation
Broker
22-Jul-2016
103/2016
Computer 2
Server where the registry component links to Enterprise Dashboard on Computer 1. Typically,
only one registry is needed for a distributed system. This second registry is added here to
demonstrate that multiple registries are supported.
Computer 3
Workstation and Demo Server with links to the registry on Computer 1. This computer represents
user machines.
Computer 4
Can also represent user machines, particularly CA Continuous Application Insight users who need
only portal access.
Also, you can install the DevTest server on a computer to run only one product-specific service, such
as the simulator executable or service.
This example system shares the following characteristics with any DevTest system:
Each DevTest Solutions system has only one Enterprise Dashboard.
Note: You must have one Enterprise Dashboard per accessible network. If you have closed
networks (networks that cannot reach each other), you need an Enterprise Dashboard for
each network where registries are running.
Each Enterprise Dashboard is connected to one or more registries. Typically, one registry is
sufficient.
Each DevTest Server installation installs one registry, the component that audits all user activity.
Each DevTest Server installation installs one local workstation. This embedded workstation is used
in a standalone installation. When the DevTest Server is installed in a distributed environment,
the local workstation may be unused.
Each DevTest Server registry in a distributed system can connect to one or more remote
Workstations.
A web browser can access DevTest Portal by browsing to a DevTest Server on port 1507 where
the URL ends with devtest (all lower case). The portal can be accessed from any web browser
without needing other DevTest Solutions software to be installed on the computer.
The following diagram highlights the relationships among the Enterprise Dashboard, the registries,
the workstation, and the Demo Server in a distributed system. The diagram also shows that users
with no local DevTest component can browse to DevTest Portal.
22-Jul-2016
104/2016
In order to get a license, the registry must connect to an Enterprise Dashboard. Once connected, the
registry needs an Enterprise Dashboard to forward use counts to. A dashboard can run with no
registries. The first time a registry starts, it must connect to an Enterprise Dashboard to download the
license. For subsequent startups, the registry uses a cached version of the license, so it does not need
to be connected to an Enterprise Dashboard.
If the connection between a registry and Enterprise Dashboard is lost, the registry will cache the use
counts locally. When the connection is re-established, the registry will forward the use counts to the
Enterprise Dashboard.
22-Jul-2016
105/2016
22-Jul-2016
106/2016
All tests are run by the virtual users (or simulators) spawned by the simulator server under the
supervision of a coordinator in the coordinator server.
Each simulator connects to and invokes actions on the system under test. A load test results when
the virtual users are running in a parallel mode.
An embedded instance of DevTest Workstation runs on the same computer that the DevTest Server is
running on. You can also configure standalone DevTest Workstations to run on separate computers in
a large distributed environment. Your testing requirements dictate the server architecture to be
used. DevTest Solutions can be scaled for large testing environments by distributing the different
components onto different hardware/operating systems.
22-Jul-2016
107/2016
22-Jul-2016
108/2016
22-Jul-2016
109/2016
More Information:
About DevTest Server Components (see page 102)
Data Flow in DevTest Server for CA Application Test and CA Service Virtualization (see
page 111)
22-Jul-2016
110/2016
The registry, coordinator server, simulator server, and VSE are "headless" Java applications that run
in separate virtual machines.
A minimal DevTest Server configuration for CA Application Test and CA Service Virtualization must
include at least one of each of these components. There can be as many instances of each type as is
needed for a specific testing environment.
Typically, a DevTest Server configuration for CA Application Test has one registry, one coordinator
server, and multiple simulator servers.
VSE is a server-level service. The service can coexist with a registry that has a coordinator and a
simulator that are attached to it. The simulator and coordinator are not mandatory to run VSE.
Data Flow in DevTest Server for CA Application Test and CA Service Virtualization
The following graphic shows the data flow among the registry, DevTest Workstation, coordinator
server, simulator servers, and database.
22-Jul-2016
111/2016
The coordinator server sends test cases to one or more simulator servers in the form of Model
Archives (MARs).
The simulator servers interact with the system under test. The types of data that are exchanged
between these components can vary enormously. The data could be simple HTTP requests with
HTML responses, web service calls, database calls, and so on.
The various components send metrics and reporting information to the database.
The registry hosts the reporting portal, so it communicates with the database to retrieve reporting
data.
The following graphic shows the data flow among the registry, VSE, DevTest Portal, and database.
22-Jul-2016
112/2016
113/2016
Installation Options
You must execute the installer as administrator on Windows to ensure that you have the appropriate
permissions for all installer actions, such as creating desktop links, registry entries, and installing
services.
Options of Components to Install (see page 115)
Typical Configurations (see page 115)
Options for Installing Required Processes (Windows) (see page 116)
22-Jul-2016
114/2016
Typical Configurations
Standalone (single computer that is used to host DevTest components)
If you are installing a new standalone DevTest Solutions on one host, install all three components:
Server (with Workstation)
New Enterprise Dashboard
Demo Server
If multiple users will use the embedded DevTest Workstation on a single computer, select the Shared
option for Installation Type. For more details, see Shared Installation Type (see page 1431).
Note: If you want to install Component Services and you are an Administrator, use the local
install.
22-Jul-2016
115/2016
Distributed Servers (multiple computers that are used to host DevTest components)
If you are installing a distributed DevTest Solutions system on multiple hosts, consider the following
approach:
1. For the first installation, from a server that meets system requirements, select the following
options:
Server
New Enterprise Dashboard, where you browse to the license file, devtestlic.xml. The
installer validates the license file and its content for signature, version, and expiration.
2. For more installations of servers, select the following options:
Server
Existing Enterprise Dashboard
Note: You install the server even if you plan to use only one component from it. For
example, if you are collecting many metrics or requesting many reports, you can
run a coordinator server on a computer with no other service running.
3. To install components on individual hosts for CA Application Test and CA Service Virtualization
users, select the following options:
Workstation
When users log in to the workstation, they link to the registry installed with one of the
servers.
Demo Server - Install (for new users who could benefit from the tutorials)
4. For CA Continuous Application Insight users, ensure that a supported browser (see page 85)
is installed. All work is done from a web-based portal.
Note: You can select one of these options, both options, or neither option. If you select
neither, you can start the process executables from the bin folder under the DevTest
server installation directory (LISA_HOME\bin) or from a command prompt.
22-Jul-2016
116/2016
Note: Record the location of the license file for future use by CA Product Support.
3. If you are using the generic UNIX installer, supply your own JVM (see page 87).
4. Install DevTest Solutions (see page 135)on as many systems as you need. When you install
the first DevTest Server, select New Enterprise Dashboard and browse to the devtestlic.xml
license file.
Post-Installation Steps
1. Configure external databases.
Configure an external database for Registries (see page 1452).
Configure an external database for the Enterprise Dashboard (see page 1459).
Note: There is no migration path from the Apache Derby database that is installed with
DevTest Solutions to an enterprise-grade database. If you use Derby, you must re-enter the
mandatory user authentication (role) data when your system becomes generally available,
where an enterprise-grade database is required.
2. Activate the Enterprise Dashboard and all registries.
a. Activate the registries (see page 127).
Note: This process also activates the Enterprise Dashboard with a product
key.
22-Jul-2016
4.
117/2016
4. (Optional) Install more workstations (see page 135) with the Demo Server for use with each
registry.
5. Verify the DevTest Solutions installation (see page 145).
6. To prevent unauthorized use, change the passwords for standard users (see page 1505).
7. Install the integration tools (see page 149) that you need.
8. Set up the mobile testing environment (see page 159).
When the installation is complete, see Administering (see page 1428) for details on setting up ACLenforced security and honoring your license agreement.
Note: To change the location of the Enterprise Dashboard database, you must rerun the
installer while retaining the current database schema. Back up customized properties files
before you reinstall. These include local.properties, site.properties, and the various
vmoptions files.
Important! If the URL to the Enterprise Dashboard changes, you must update the site.
properties file in the LISA_HOME directory for each registry server that reports to the
Enterprise Dashboard, setting the devtest.enterprisedashboard.host=somehost property
with the new information.
When you start the Enterprise Dashboard process and each registry process, the Enterprise
Dashboard process reads the registry settings and it activates the registries. The activated registries
are displayed on the Enterprise Dashboard UI for your verification.
Important! If the host name or port of a registry changes, you must restart the registry so
that the Enterprise Dashboard can reactivate it.
22-Jul-2016
118/2016
Note: Typically, the Demo Server is installed with the Server components only in a
standalone system. In a distributed system, the Demo Server is usually installed with the
DevTest Workstation for users who are new to DevTest Solutions. The Demo Server is
used for tutorials and for many of the artifacts in the Examples (see page 407) project.
Follow these steps:
1. Run the installer file, for example, devtest_win_x64.exe.
The Welcome to the DevTest Solutions Setup Wizard step opens.
2. Click Next.
The CA End User License Agreement step opens.
3. Read the license agreement, scrolling to the end, select the I accept the terms of the License
Agreement option, and click Next.
The Select Destination Directory step opens.
4. Enter the path and folder name for the installation directory (LISA_HOME). Consider a name
that includes the release identifier, if you want to keep the current release separate from
older releases. For example, enter: C:\DevTestServer_8.0. Or, accept the default (C:\Program
Files\CA\DevTestSolutions). If you browse to a path and you enter the name of a new folder,
the installation wizard creates the folder.
5. Click Next.
The Installation Type step opens.
6. Select one of the following options and click Next.
22-Jul-2016
119/2016
To find the URL for an existing Enterprise Dashboard, navigate to the DevTest
home directory and locate the site.properties file. The devtest.
enterprisedashboard.host and devtest.enterprisedashboard.port properties
define the Enterprise Dashboard location.
The Demo Server step opens.
9. If you want the installer to unzip the DevTestDemoServer.zip into the LISA_HOME directory,
select the Install demo server option. Then, accept the default path (the Downloads
directory) or specify another fully qualified path.
22-Jul-2016
120/2016
22-Jul-2016
121/2016
Note: Typically, the Demo Server is installed with the Server components only in a
standalone system. In a distributed system, the Demo Server is usually installed with the
DevTest Workstation for users who are new to DevTest Solutions.
22-Jul-2016
122/2016
The following procedure is based on the graphical version of the installer. To use the command-line
version of the installer, add the -c option. For example:
./devtest_platform_x64.sh-c
Note: If you are using the generic UNIX installer, ensure that a Java virtual machine (JVM)
(see page 87) is on the same computer. The version of the JVM must be 1.7. You can
specify a specific JVM by setting the JAVA_HOME environment variable. If the installer
cannot find a JVM, the installer displays a message and exits.
22-Jul-2016
123/2016
Shared
Used by administrators to install all of the DevTest Solutions components to a shared
location that multiple users from multiple computers can access. All data and temporary
files are stored in user-specified directories. Each user has personal data, but they share a
common DevTest Solutions installation. With a shared installation, users only need read
access to the DevTest Solutions programs directory.
The Select Components step opens.
9. Ensure that the Server check box is selected and click Next.
The Enterprise Dashboard step opens.
10. Specify one of the following options, and click Next.
New Enterprise Dashboard (Specify location of license file)
If this is the first DevTest Server you are installing, click Browse, navigate to the location of
the license file, select devtestlic.xml and click Open. When you click Next, the installer
copies the devtestlic.xml file to the installation directory (LISA_HOME) on the local host.
The Enterprise Dashboard process is installed in the LISA_HOME/bin directory.
Existing Enterprise Dashboard Service
If the Registry in this DevTest Server connects to the Enterprise Dashboard installed with
the first DevTest Server you installed, enter the location of the existing Enterprise
Dashboard (ED).
The Specify Demo Server step opens.
11. If you want the installer to unzip the demo server into the same directory where you are
installing the DevTest Server, select the Install demo server check box and browse to the
DevTestDemoServer.zip file.
12. Click Next.
If you chose the shared installation type, the following steps prompt you to specify the data
directory and the temporary files directory.
13. Specify the directories, clicking Next after each step.
The Select Directory for Symlinks step opens.
14. Click Browse and navigate to the directory where DevTest creates symbolic links to the
executable files. The default is /usr/local/bin. You must have the required permissions to
write to the directory. If you do not want symbolic links to be created, clear the Create
symlinks check box.
15. Click Next.
The Desktop Icons step opens.
16. (Optional) If you do not want to create desktop icons for, DevTest Enterprise Dashboard,
DevTest Portal UI, and DevTest Workstation, clear the check box.
17. Click Install to start the installation.
When the installation finishes, the Information step opens.
18. Read the information and click Next.
22-Jul-2016
124/2016
Note: Typically, the Demo Server is installed with the Server components only in a
standalone system. In a distributed system, the Demo Server is usually installed with the
DevTest Workstation for users who are new to DevTest Solutions. The Demo Server is
used for tutorials.
Follow these steps:
1. Run the installer file, for example, devtest_osx_x64.dmg.
The Welcome to the DevTest Solutions Setup Wizard step opens.
2. Click Next.
The CA End User License Agreement step opens.
3. Read the license agreement, scrolling to the end, select the I accept the terms of the License
Agreement option, and click Next.
The Select Destination Directory step opens.
4. Specify the folder where you want to install one or more components of the DevTest
Solutions. If you specify a folder that does not exist, the Setup wizard creates it.
5. Click Next.
The Installation Type step opens.
6. Select one of the following options and click Next.
Local
Installs all DevTest Solutions components into a single directory on the local computer. By
default, all data is stored in this directory, and each user has a personal temp directory.
Local is the most common installation type that is used in most environments.
Shared
Used by administrators to install all of the DevTest Solutions components to a shared
location where multiple users can log in and can use the DevTest Workstation. All data
and temporary files are stored in user-specified directories. Each user has personal data,
22-Jul-2016
125/2016
126/2016
More Information:
Activate the Registries (see page 127)
Verify Registry Activation (see page 128)
Post-Installation (see page 129)
Uninstall DevTest Server (see page 134)
127/2016
1.
DevTest Solutions - 9.5
b. Start the Enterprise Dashboard Server.
Windows users can select Enterprise Dashboard Server from the Enterprise Dashboard
option in the Start menu. Alternatively, navigate to the LISA_HOME\bin directory and
start EnterpriseDashboard.exe.
2. Start each registry.
a. Log on to the host where a DevTest Server is installed.
b. Start the registry.
Windows users start the registry from the Start menu (under DevTest Solutions) or
from the Registry.exe in the bin directory under the DevTest Server installation
directory.
c. Repeat these steps for each registry.
Note: After this property is set, the registry does not push data to the
Enterprise Dashboard until the top of the next hour. For example, if you set
this property at 1:35pm, the registry data does not appear until 2:00pm.
3. (Optional) If you use a remote registry for DevTest Portal, set the lisa.registryName property
in the local.properties file to the URL of the registry.For example: You have two machines.
Your registry is running on a machine with IP address 10.155.12.796 but you want to start
DevTest Portal on a different machine. On the second machine, add lisa.
registryName=tcp://10.155.12.796:2010/Registry to local.properties. To connect using SSL
between DevTest Portal and registry, use lisa.registryName=ssl://10.155.12.796:2010
/Registry instead. If you use a custom port, it would go in place of the 2010 in that URL.
Machine names and domain names can be used instead of IP addresses assuming they can be
resolved by the network.You must also set the registry.host property in phoenix.properties. If
you use a custom port, registry.host.port is required as well.
From the computer where the Enterprise Dashboard is installed, Windows users select the
Start menu option, Enterprise Dashboard, Enterprise Dashboard UI.
2. Log in.
22-Jul-2016
128/2016
Post-Installation
This section describes the post-installation tasks that are required to configure DevTest Server.
Using an HTTP/S Proxy Server - DevTest Server (see page 129)
Running Components on Different Systems (see page 130)
Calculate Simulator Instances (see page 131)
Load and Performance Server Sizing (see page 132)
Using DevTest Workstation with Your Java Environment (see page 132)
Change the Default Project Home (see page 133)
Project Directory Structure (see page 133)
129/2016
6.
7. Verify that you removed the comment symbols in front of the properties.
8. Save the file and exit.
Example:
The first two lines of the following example specify that the URL for the HTTP proxy server is
http://192.168.24.242:49185.
The third line specifies that the hosts that will not go through this proxy include the loopback address
for the localhost (127.0.0.1) and IP addresses in the range 192.168.32.0 through 192.168.32.255.
Notice that the pipe symbol (|) is used as the delimiter between the IP addresses to exclude. Notice
also that the wildcard (*) represents any valid value, where valid values for an IP address node range
from zero to 255. The wildcard character can also be used with FQDNs and host names, if hosts to
exclude share a standard naming convention.
lisa.http.webProxy.host=192.168.24.242
lisa.http.webProxy.port=49185
lisa.http.webProxy.nonProxyHosts=127.0.0.1|192.168.32.*
22-Jul-2016
130/2016
For example:
lisa.registry.url=tcp://myserver.example.com:2010/Registry
For example:
./CoordinatorServer-mtcp://myserver.example.com:2010/Registry
Note: You can set the number of concurrent instances for a simulator with a command-line
option. Open a command prompt, navigate to the LISA_HOME\bin directory, and type
simulator --help for details.
22-Jul-2016
131/2016
Warning! Replacing the default JRE means that you are migrating away from an officially
certified JRE/SDK. We discourage you from replacing the default JRE, unless it is to support
specific JRE/JDK specific functionality. Using a different JDK/JRE from the one that is
included in your DevTest environment may not be supported, depending on the impact of
the specific JRE/JDK installed.
22-Jul-2016
132/2016
If you do this, it is important to understand how DevTest Workstation selects the JRE to use.
The following priority is used to select what Java VM to use when starting DevTest Workstation:
1. The DevTest Workstation-installed JRE in the LISA_HOME\jre directory
2. LISA_JAVA_HOME environment variable
3. JAVA_HOME environment variable
4. JDK_HOME environment variable
Follow these steps:
1. Rename the LISA_HOME\jre directory (for example, rename jre to jre_default).
2. Point the LISA_JAVA_HOME environment variable to your Java installation directory.
More Information:
Supplying Your Own JVM (see page 87)
22-Jul-2016
133/2016
Important! If you do not delete this file, future installations of a local installation
type will not install correctly.
4. (Optional) Remove the DevTest schema objects from the external database. If necessary, you
can use the DDL statements in the LISA_HOME\database\dropSchema directory to perform
this action.
5. Start the uninstall application.
6. Click Next.
7. To delete folders for the database, hotDeploy, lib/core, and related user preferences, select
the Delete all files check box.
8. Click Next.
If you did not choose to delete all files, a step opens with the list of files that could not be
deleted.
9. Click Finish.
22-Jul-2016
134/2016
135/2016
6.
7. Clear the Server check box, ensure that the Workstation check box is selected, and click Next.
If you chose the shared installation type, the following steps prompt you to specify the data
directory and the temporary files directory.
8. Specify the directories, clicking Next after each step.
The Demo Server step opens.
9. If you want the installer to unzip the demo server into the LISA_HOME directory, select the
Install demo server option and specify the fully qualified path of the demo server zip file.
10. Click Next.
The Select Start Menu Folder step opens.
11. Specify whether to add DevTest Workstation to your Start menu and if so, whether to add
DevTest Workstation to the Start menu of other users.
To create a Start menu folder with shortcuts for all users, accept all defaults. Optionally,
enter a new folder name.
To have no Start menu folder, clear the Create a Start Menu folder check box.
To create a Start menu folder and restrict the shortcut display to your Start menu:
Accept the selection of Create a Start Menu folder.
Accept the default name or enter another name.
Clear the Create shortcuts for all users check box.
12. Click Next.
The Select File Associations step opens. All associations are selected by default.
13. Leave all associations selected or clear the file extensions that you do not want to associate
with DevTest.
14. Click Install to start the installation.
When the installation finishes, the Information step opens.
22-Jul-2016
15.
136/2016
Note: If you are using the generic UNIX installer, ensure that a Java virtual machine (JVM)
(see page 87) is on the same computer. The version of the JVM must be 1.7. You can
specify a specific JVM by setting the JAVA_HOME environment variable. If the installer
cannot find a JVM, the installer displays a message and exits.
4. Click Next.
The CA End User License Agreement step opens.
5. Read the license agreement, select the I accept the terms of the License Agreement check
box, and click Next.
The Select Destination Directory step opens.
22-Jul-2016
6.
137/2016
6. Specify the directory where you want to install DevTest Workstation. Do not use a directory
that contains spaces. (The default is /opt/CA/DevTest.)
7. Click Next.
The Installation Type step opens.
8. Select one of the following options and click Next.
Local
Installs all DevTest Solutions components into a single directory on the local computer. By
default, all data is stored in this directory, and each user has a personal temp directory.
Local is the most common installation type that is used in most environments.
Shared
Used by administrators to install all of the DevTest Solutions components to a shared
location that multiple users from multiple computers can access. All data and temporary
files are stored in user-specified directories. Each user has personal data, but they share a
common DevTest Solutions installation. With a shared installation, users only need read
access to the DevTest Solutions programs directory.
The Select Components step opens.
9. Clear the Server check box, ensure that the Workstation check box is selected, and click Next.
If you chose the shared installation type, the following steps prompt you to specify the data
directory and the temporary files directory.
10. Specify the directories, clicking Next after each step.
The Specify Demo Server step opens.
11. If you want the installer to unzip the demo server into the LISA_HOME directory, select the
Install demo server check box and specify the fully qualified path of the demo server zip file.
12. Click Next.
The Select Additional Tasks step opens.
13. If you do not want to create a desktop icon for DevTest, clear the check box.
14. Click Install.
When the installation is finished, the Information step opens.
15. Read the information and click Next.
The Completing the DevTest Solutions Setup Wizard step opens.
16. Click Finish.
138/2016
22-Jul-2016
139/2016
More Information:
Using an HTTP/S Proxy Server - DevTest Workstation (see page 140)
Environment Settings (see page 142)
Using DevTest Workstation with Your Java Environment (see page 132).
22-Jul-2016
140/2016
5.
##===Preemptivelysendauthorizationinformationratherthanwaitingforachallenge
22-Jul-2016
141/2016
Environment Settings
DevTest documentation mentions a token that is named %LISA_HOME% (for Windows) or
$LISA_HOME (for OS X or UNIX). This token indicates the location where the DevTest Solution was
installed.
On all supported operating systems, an environment variable is set with this name automatically
from the launch scripts or programs.
For example, if you installed DevTest Server into C:\DevTest_release_number, that is the value of %
LISA_HOME%. DevTest Workstation also has access to the value of this variable in a property named
LISA_HOME.
To put more JARs, zips, or directories in the DevTest classpath, you have two options:
Define the environment variable LISA_POST_CLASSPATH and set the resources that you want
there.
Put them in the %LISA_HOME%/hotDeploy directory.
Note: For more information about environment settings, see Common Properties and
Environment Variables (see page 441).
Note: The demo server uses port 1529, which cannot be in use by any other application. If
this port is not available the demo server does not start successfully.
142/2016
Notes:
To start the demo server from the command line, go to the
LISA_HOME\DemoServer\lisa-demo-server directory and start the script for your
operating system:
(Windows) start-windows.bat
(UNIX or Linux) start-unix-linux.sh
(OS/X) start-osx.command
To run the demo server on UNIX or Linux, use the /bin/bash shell.
The demo server runs the DevTest Java Agent by default, reporting as much
information as possible back to CA Continuous Application Insight. To turn off this
reporting, use the -noagent flag. To turn off heap / stack information only, use the noheapss flag.
If native agent binaries are present on the widely used UNIX and Linux distributions, the
demo server launches the native agent instead. To make the demo server use the pure
Java agent in this case, pass the --javaagent parameter to the startup command. The
native agent binaries are only intended for use with Java 1.4 and earlier.
The demo server database is created when the demo server is started for the first time.
This database is located in the LISA_HOME\DemoServer\lisa-demoserver\jboss\server\default\data\lisa-demo-server.db directory.
After the demo server is started, you can access the server with a browser on port
22-Jul-2016
143/2016
Note: Since Forward Cars uses port 3434, that port cannot be in use by any other
application. If this port is not available, Forward Cars does not start successfully.
22-Jul-2016
144/2016
You can now experiment with the application's workflow (searching for, choosing, and financing a
car) using its various features. See Tutorial 11: Run the Forward Cars Demo Application (see page 295)
for detailed instructions on using Forward Cars.
Note: About DevTest Server Components (see page 102) describes the processes.
22-Jul-2016
145/2016
If starting Enterprise Dashboard or any of the DevTest web services takes a long time,
check your hard disk for fragmentation. Defragging the disk can improve performance.
Note: To shut down the server components, use the reverse order.
22-Jul-2016
146/2016
Setting up security involves creating role-based user accounts and specifying the ACL with LDAP or
with credentials that you define. If you plan to use LDAP for authentication, do not add your own
user name and password as described in Create a User with the Super User Role (see page 147). To
access the UIs before you configure LDAP, use the standard user that is defined with the Super User
role.
When you access DevTest Workstation, a login dialog opens.
To log in, type admin in the Username field, type admin in the Password field, and click Login.
When you browse to DevTest Portal, the login area opens.
To log in, type admin in the User Name field, type admin in the Password field, and click Log in.
22-Jul-2016
147/2016
Enterprise Dashboard
To view the list of registries that are connected to the Enterprise Dashboard:
Browse to the Enterprise Dashboard UI and log in.
http://hostname:1506
(Windows) Log in to the server where the Enterprise Dashboard is installed. From the Start menu,
expand DevTest Solutions and select DevTest Enterprise Dashboard UI.
Portal
The UI requires the Broker to be running.
CA Application Test and CA Service Virtualization use the Portal for some functionality. See Using CA
Application Test (see page 346) and Using CA Service Virtualization (see page 673).
Before you use CA Continuous Application Insight, install the DevTest Java agent. Browse to the
following URL and log in to the DevTest Portal to access CAI. Specify the host name of a computer
with a running registry. See Using CA Continuous Application Insight (see page 1040).
Browse to the Portal UI and log in.
http://hostname:1507/devtest
(Windows) From the Start menu, expand DevTest Solutions and select DevTest Portal UI.
22-Jul-2016
148/2016
Workstation
Start DevTest Workstation on your local host. DevTest Workstation is where you create and edit tests
and also stage tests. Alternative methods include TestRunner and junitlisa ant task, for example. See
Using CA Application Test (see page 346). The UI requires a coordinator server and a simulator server
to be running.
(Windows) From the Start menu, expand DevTest Solutions and select Workstation.
Go to LISA_HOME\bin and run the Workstation.exe.
Note: If you are running Windows 2012, you can achieve .NET Framework 2.0 compatibility
by installing .NET Framework 3.5.
In addition, ensure:
The user ID is the same on both computers.
The user ID has administrator privileges on both computers.
22-Jul-2016
149/2016
22-Jul-2016
150/2016
22-Jul-2016
4.
151/2016
Run TCPMon
TCPMon is a utility that lets you monitor the messages that are passed in a TCP-based conversation.
TCPMon consists of the following elements:
For Windows: A .jar file, a .bat file
For UNIX: A shell script
To run TCPMon:
Double-click the .bat file on Windows or execute the shell script on UNIX.
You can find a tcpmon.bat file in the LISA_HOME\bin directory. You can get the latest version of
TCPMon from: http://ws.apache.org/commons/tcpmon/.
Note: This section documents the TCPMon version from Apache. This TCPMon version
contains a Sender tab that is not available in the TCPMon version that is distributed with
DevTest.
22-Jul-2016
152/2016
22-Jul-2016
153/2016
Prerequisites
The plug-in has the following prerequisites:
LISA_HOME environment variable must be defined and set to the root directory of the DevTest
installation.
DevTest Server and test cases must run on Microsoft Windows. The plug-in only runs on
Microsoft Windows.
DevTest ALM plug-in must be installed where DevTest Workstation and the test files are located.
The following software must be installed:
DevTest 9.1 and later, 64-bit or 32-bit DevTest installation (including the corresponding version of
Java and browser)
HP ALM 12.2 or 12.5
HP Quality Center Connectivity, HP Quality Center Client Registration
HP ALM Client Side components for V 12.2 or V12.5: HP ALM Connectivity, HP ALM Client
Registration
.NET 4.5 Runtime or later
Installation
Follow these steps:
1. Ensure that the .NET runtime is installed on the client computer.
2. Install the HP ALM Quality Center Client Side components.
3. Install DevTest.
4. Define the LISA_HOME environment variable and set it to the root directory of the DevTest
installation.
5. Go to the LISA_HOME\addons\qc directory and run the executable file for your system
configuration:
DevTestALMPlugin_x64.exe
DevTestALMPlugin_x86.exe
6. Complete the wizard steps.
The DevTestConnection.properties files are created.
7. Ensure all the DevTest services are running.
22-Jul-2016
154/2016
InstallationUtility Command-Line
The plug-in installer uses the InstallationUtility executable to register the plug-in and to create the
DevTestConnection.properties file. Use the InstallationUtility executable to change the connection
information and generate a new encrypted password in DevTestConnection.properties file.
Run the following command to get the usage information:
C:\Program Files\CA\DevTest|bin>InstallationUtility Installation Utility Help
InstallationUtilty command <argument>
InstallationUtility
-h | --help
22-Jul-2016
155/2016
deregister <dll_name>
Deregisters the dll file.
check <dll_name>
Checks the registration of the dll file.
config <options>
Creates or replaces the configuration file.
The following options are available:
-h, --help
Displays the help screen.
--user <user>
The DevTest username. Required for the configuration.
--pass <password>
The DevTest password. Required for the configuration.
--host <hostname>
The DevTest host name. Required for the configuration.
--port <port>
The DevTest port 1505. Required for the configuration.
--protocol <HTTP | HTTPS>
The DevTest protocol; HTTP or HTTPS. Required for the configuration.
--coord <coordinator>
The DevTest coordinator. Required for the configuration. Set to Coordinater for the local coordinator.
Note: Create a backup of the DevTestConnection.properties file before you generate a new
file using the InstallationUtility executable.
InstallationUtility config --host localhost --user admin --pass admin --port 1505 --protoc
Note: You must enter the parameters for all the connection information to generate a new
22-Jul-2016
156/2016
See Run DevTest Tests in HP Quality Center (see page 632) for more information about how to run
tests.
22-Jul-2016
157/2016
1.
Password
2. Log on to the System Landscape Directory.
158/2016
159/2016
Android Applications
All Android testing requires the following setup:
Download and Install the latest version of Android Studio (see page 163).
Define ANDROID_HOME (see page 163).
Configure the Android SDK Manager (see page 163).
The following setup is also required for each type of testing listed.
Local testing on Windows and Mac using Android Virtual Devices (AVDs).
Requires the following setup:
Create an Android Virtual Device (AVD Manager) (see page 165).
Local testing on Windows and Mac using Genymotion virtual device.
Requires the following setup:
Create a Genymotion account. (see page 174)
Download and Install Genymotion and VirtualBox (see page 174).
Create Genymotion virtual devices (see page 174).
Local testing on Windows using a physical Android device.
Requires the following setup:
Enable USB Debugging on the device (see page 165).
Cloud testing on Windows and Mac using SauceLabs devices.
Requires the following setup:
Create a SauceLabs account with a unique access key.
Cloud testing on Windows and Mac using Perfecto devices.
Requires the following setup:
Create a Perfecto account with a defined Host Name, User Name, and Password.
iOS Applications
Local testing on Mac using Xcode simulators.
Requires the following setup:
Download and install Xcode (see page 166).
Local testing on Mac using a physical iOS device.
22-Jul-2016
160/2016
Additional Considerations
Remote testing and recording lets you test applications on remote devices and computers. For
more information, see Work Remotely (see page 663)
By default, DevTest Solutions uses the Application Test SDK for iOS tests. If you need to disable
the Application Test SDK for any reason, set the following property in your project config file (see
page 445):
lisa.mobile.target.automation=Appium
22-Jul-2016
161/2016
22-Jul-2016
162/2016
More Information:
Setup Steps for Mobile Testing (see page 163)
Using Genymotion (see page 174)
Note: The minimum version that Mobile Testing supports is SDK Platform 18 (4.3.1).
Define ANDROID_HOME
For your Android Virtual Devices (AVDs) to function properly, you must define an ANDROID_HOME
property.
Follow these steps:
1. In DevTest Workstation, click Actions, Mobile, Settings.
The project.config window opens.
2. Select Mobile, Android.
3. Enter the fully qualified path to your Android Studio Bundle installation in the Android Home
field.
For example in windows: C:\Android Studio\sdk
4. Click OK.
22-Jul-2016
163/2016
Make sure that you set the JAVA_HOME property in your computer settings to
point to the JDK location.
Or
Cannot find the zipalign command. Please install Android SDK Build-tools Rev 20.
If you encounter this error message, update your Android SDK Build-tools version.
22-Jul-2016
164/2016
22-Jul-2016
165/2016
6.
DevTest Solutions - 9.5
AVD Name
Name of the Android Virtual Device that to create. Use this name in the Android AVD field
when creating an Emulator Session Asset.
Device
Select the type of device to test.
Target
Select the target for your AVD.
CPU/ABI
Specifies the underlying CPU emulator type that the AVD is made for. Most mobile devices
use ARM.
You must specify a system image for the API level of your AVDs. In the Android SDK
Manager, select a System Image for each API version that you install.
Memory Options
Set the RAM value to at least 512 and the VM Heap value to at least 32.
Emulator Options
Clear the Use Host GPU check box. Increase the window size if this option is not initially
visible.
7. Accept the default values for the remaining fields, or customize them for your AVD.
8. Click OK.
Your new device is added to the list of devices in the Android Virtual Device Manager.
22-Jul-2016
166/2016
22-Jul-2016
167/2016
Note: You do not need to type the exact string, as the codesign utility can match it. You can
use a name such as "iPhone Developer" and that would be enough to be a unique name.
However, if you have other iOS certificates, it is good practice to use the entire certificate
name.
If a developer profile is made available from another team member, you can import it into XCode.
Follow these steps:
1. Click XCode, Preferences, Accounts.
2. Click the gear icon in the bottom left panel and select Import Accounts.
3. Select the file and enter the password.
Click here (https://developer.apple.com/library/ios/recipes/xcode_help-accounts_preferences/articles
/import_signing_assets.html) for more information from the Apple Development site.
22-Jul-2016
168/2016
4. Ensure that the Deployment Target field in the Deployment Info section is set to 8.0 or
higher.
5. Click the Build Settings tab.
6. Ensure that the Deployment Target field in the Deployment section is set to 8.0 or higher.
7. Build the test application and prepare IPA signing (see page 166) for the test device.
8. Copy the SDK Enabled test application that you just built to your Windows machine.
22-Jul-2016
169/2016
Note: This directory does not exist by default and must be created.
CA MAA Recording
CA Mobile App Analytics (MAA) helps app developers visualize, investigate, manage, and support user
interactions with their mobile apps. The application provides deep insights into the performance,
user experience, crash, and log analytics of mobile apps. The application is aimed to help enterprises
understand the experience of mobile app users across the DevOps application lifecycle. This section
describes the steps required to enable CA MAA recording in an iOS application. For more information
about CA MAA, see CA Mobile App Analytics (https://docops.ca.com/CAMAA).
Enabling CA MAA requires the following:
Xcode (https://developer.apple.com/support/xcode) installed
Apple developer account
CA MAA account
Copy of AppTestSDK.framework
22-Jul-2016
170/2016
171/2016
Note: In this state, the test application will not build successfully. Additional
compiler and linker flags are required by CA MAA.
22-Jul-2016
172/2016
2.
DevTest Solutions - 9.5
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:
(NSDictionary*)launchOptions
{
[CAMDOReporter initializeSDK];
CGRect screenBounds = [[UIScreen mainScreen] bounds];
Important! When running with CA MAA and AppTestSDK, a new session starts when
the application launches. The session ends when you press the Home button. When
the application exits to the home screen, the recording uploads to CA MAA. If you
reopen the application from the Home screen, the application is no longer
recording data.
22-Jul-2016
173/2016
Using Genymotion
Genymotion is another emulator that uses VirtualBox as an Android emulator. Genymotion is faster
and provides overall better performance than the Android emulator provided with the Android
Software Development Kit (ASDK). This tool requires additional setup.
Follow these steps:
1. Download and install both VirtualBox and Genymotion from www.genymotion.com (
http://www.genymotion.com).
Note: Installing Genymotion requires you to create a Genymotion user account, but
the basic download is free. The Windows platform has a combined Virtualbox
/Genymotion installer.
Note: The name of the device is the name you enter in the asset dialog in
DevTest Solutions. You can change the default Genymotion name to a
simpler name.
f. Click Next.
The download of your virtual device begins. These download images are typically
around 200MB in size.
g. Click Finish when the download is complete.
h. To add another virtual device, click Add in the Genymotion main window and repeat
the previous steps.
You are now ready to record with Genymotion. When you record a test (see page 646)
, select Genymotion in the Target Type field of the Configure Mobile Session dialog.
22-Jul-2016
174/2016
Each line is a pair of identifiers. The first identifier is the name you gave the device when you
created it. The second identifier is the UID. You can use either identifier when passing devices as
targets on the command line. The UID does not need the braces when you are using it on the
command line.
vboxmanage list runningvms
Lists the virtual devices that are running.
You can perform the same function with the ADK command, $ANDROID_HOME/platform-tools
/adb devices. The ADK command lists both Genymotion and ADK emulated devices.
The output from this command resembles the following:
emulator-5554device
192.168.0.56:5555device
ADK devices are prefixed with "emulator." Genymotion devices begin with the IP address. The
next number is the port that the device is using.
player --vm-name <UID or name>
Navigate to the path where the device is installed, and use this command to start a virtual device.
You can also start a device from the Genymotion interface.
Define VBOXMANAGE_CMD
If you install VirtualBox in a non-default location, define the VBOXMANAGE_CMD property. This
property lets DevTest find the vboxmanage tool, so your Genymotion simulators function efficiently.
You can define this property in three ways:
Define an environment variable in Windows
Edit the lisa.properties file (see page 1716) (to affect all projects)
Add a property to the project property file in the Properties Editor (to affect a single project)
22-Jul-2016
175/2016
VBOXMANAGE_CMD=c:\programfiles\oracle\virtualbox\vboxmanage.exe
exportVBOXMANAGE_CMD=/usr/bin/vboxmanage
Mac
export VBOXMANAGE_CMD=/usr/bin/vboxmanage
Save.
176/2016
Docker Containers
DevTest Solutions supports using Docker to deploy DevTest instances in multiple environments as
part of a continuous delivery process.
22-Jul-2016
177/2016
Docker Prerequisites
Note: Using Docker with DevTest Solutions requires advanced expertise with Docker
images and containers. Do not use DevTest with Docker unless you are thoroughly familiar
with Docker fundamentals and processes.
Note: Docker support was added in DevTest Solutions 8.3. You must have installed the
Linux version of 8.3 or later.
22-Jul-2016
178/2016
For detailed information about the contents of each image and instructions for using it, see the
README file included with each image.
Docker Images
Docker images included in the docker subfolder include:
devtest/dradis-base
Approximate size: 656.7 MB
This image can be used to run a standalone Enterprise Dashboard container. See the dradislicensed example for more information.
Note: Before Enterprise Dashboard will run successfully in a container, you must add your
Enterprise Dashboard license file to the images.
devtest/portal-base
Approximate size: 1.093 GB
This image can be used to run a standalone DevTest Portal container.
devtest/demoserver
Approximate size: 508.6 MB
This image can be used to run a standalone DevTest Demo Server container.
devtest/servers-base
Approximate size: 735.1 MB
This image can be used to run standalone coordinator, simulator, or VSE containers.
devtest/registry-broker-base
Approximate size: 1.438 GB
This image can be used to run standalone registry containers, broker containers, or both. This
image is built on top of the devtest/servers-base image, so it contains everything the devtest
/servers-base image contains, plus the necessary additions for the registry and broker processes.
devtest/devtest-base
22-Jul-2016
179/2016
Example
Use the LISA_MORE_VM_PROPS property on the command line to point to a running Enterprise
Dashboard:
> docker run -P -e LISA_MORE_VM_PROPS="-Dlisa.enterprisedashboard.service.
url=tcp://dradishost.domain.com:2003/EnterpriseDashboard" devtest/registry-base /opt
/bin/Registry
22-Jul-2016
180/2016
Upgrading DevTest
This section describes how to upgrade an earlier version of DevTest Solutions to the latest version .
The type of upgrade that this section describes is an in-place upgrade. You run the installer for
DevTest 9.5 and specify the same directory as the existing installation.
This section assumes that the earlier version is 7.5 or later.
Important! If you have any questions, contact CA Support before you attempt the upgrade.
Product Changes
The products were renamed in version 8.0.
Old Name
New Name
CA Service Virtualization
CA LISA Test
CA Application Test
CA LISA Pathfinder
For information about how the functionality has changed since the version of your existing
installation, see the release notes for each newer release.
Licensing
In DevTest 8.0, the license policy changed from component-based licensing to concurrent user-based
licensing. The devtestlic.xml file contains the license.
For more information, see How License Activation Works (see page 118) and License Administration
(see page 1467).
22-Jul-2016
181/2016
Enterprise Dashboard
In LISA 7.5.x, the Enterprise Dashboard was an optional component and had a separate installer.
In DevTest 8.0, the Enterprise Dashboard became a required component and was integrated into the
DevTest installer.
CA Technologies does not need you to preserve the data from a 7.5. x installation of the Enterprise
Dashboard. If you want to preserve the data for your own purposes, contact CA Support for
assistance.
When you do an in-place upgrade from DevTest 8.0 or later, the schema of the Enterprise Dashboard
database is updated and the existing data is maintained. You do not need to create a new database.
The database user must have DBA privileges. Otherwise, the Enterprise Dashboard will fail to start
after the upgrade.
You cannot change the type of database during the upgrade process. For example, you cannot switch
from Oracle to SQL Server.
The registry database is not upgraded by the installer. After finishing the upgrading processes by the
installer, the first invocation of registry will upgrade the registry database.
After you upgrade from a previous DevTest version, you will have DevTest and Enterprise Dashboard
schema upgrade scripts in the LISA_HOME\database\upgrade folder with all supported databases
for previous releases. For example, if you upgrade from 9.0.0 to 9.5.0, you see ten DDL files.
db2_enterprisedashboard_upgrade_9.0.0.ddl
db2_upgrade_9.0.0.ddl
derby_enterprisedashboard_upgrade_9.0.0.ddl
derby_upgrade_9.0.0.ddl
mysql_enterprisedashboard_upgrade_9.0.0.ddl
mysql_upgrade_9.0.0.ddl
oracle_enterprisedashboard_upgrade_9.0.0.ddl
oracle_upgrade_9.0.0.ddl
sqlserver_enterprisedashboard_upgrade_9.0.0.ddl
sqlserver_upgrade_9.0.0.ddl
To generate upgrade DDLs for other DevTest versions, you must execute with a command-line utility.
For DevTest schema upgrade scripts, execute:
Java.exe -jar C:\DevTest\lib\core\lisa-core-9.5.0.jar -ud 8.5.0
22-Jul-2016
182/2016
This creates Enterprise Dashboard upgrade scripts from release 8.5.0 under the current folder.
To specify a destination folder, add more arguments as follows.
Java.exe -jar C:\DevTest\lib\dradis\dradis-9.5.0.jar -ud 8.5.0 C:\ddl
In DevTest 9.1 and later, Enterprise Dashboard properties are kept in the dradis.properties file. In
order to avoid confusion in the future, consider removing the "dradis" properties from your local.
properties and site.properties files, as they no longer impact Enterprise Dashboard processing.
With DevTest 9.1 and later, configuration of the Enterprise Dashboard URL has changed. Therefore,
the parameters that are passed when starting a registry must change also, to something similar to
this:
For details see Reactive a Registry or Enterprise Dashboard (see page 1541).
To support pre-9.1 DevTest registries, the EnterpriseDashboardCIC service provides backwards
compatibility and must be started (on an image where dradis-CIC is available). Use a command similar
to the following:
docker run d p 2003:2003 --name=dradisCIC devtest-licensed:latest /opt/devtest/bin
/EnterpriseDashboardCIC
For more details on backward compatibility with older registries, see Maintain Registries (see page
1542).
Registry
When you do an in-place upgrade, the schema of the registry database is updated and the existing
data is maintained. This data includes reports, custom users, custom roles, CVS monitors, and CAI
paths. The LISA_HOME\Projects folder is also maintained. You do not need to create a new database.
The database user must have DBA privileges. Otherwise, the registry will fail to start after the
upgrade.
You cannot change the type of database during the upgrade process. For example, you cannot switch
from Oracle to SQL Server.
22-Jul-2016
183/2016
Property Files
The following list describes what happens to the main property files in an in-place upgrade:
The lisa.properties file of the existing installation is replaced with the 9.5 version.
The _local.properties file of the existing installation is replaced with the 9.5 version.
The _site.properties file of the existing installation is replaced with the 9.5 version.
A _dradis.properties file is created. Any customized properties for Enterprise Dashboard in your
local.properties or site.properties file are migrated to a dradis.properties file.
If you created a local.properties file, the file is preserved as is.
If you created a site.properties file, the file is preserved as is.
You are not supposed to modify the lisa.properties file. If you did make changes to the lisa.properties
file, the upgrade process overwrites the changes.
Custom Folders
If the existing installation contains any custom folders, the folders are preserved as is.
22-Jul-2016
184/2016
Obtain License
Contact your account manager to obtain a new license for DevTest 9.5.
Download Installer
Go to the Download Center on CA Support Online and obtain the installer for DevTest 9.5.
For detailed instructions, see Download DevTest Solutions Installers (see page 113).
Copy the devtestlic.xml file to the folder that contains the installer and the DevTestDemoServer.zip
file.
22-Jul-2016
185/2016
If your test cases and virtual services are in a source control repository, make a copy of those assets.
Once the copy is created, you can use the new copy with DevTest 9.5.
Upgrade
Once you have finished the prerequisite tasks (see page 185), you can perform the upgrade.
Run the installer for DevTest Server as described in Installing and Configuring DevTest Server (see
page 119). When the installer prompts you to specify the installation directory, set the value to the
directory where the existing installation is located.
Patches Folder
If the existing installation contained a LISA_HOME\lib\patches folder, the name of the folder is
changed to patches.backup. You should not need to apply any of the patches to the new installation.
User Administration
In DevTest 8.0, access control (ACL) became mandatory.
If you are upgrading from LISA 7.5.x, be sure to review the latest information about this feature in
Access Control (ACL) (see page 1494). Note that access to DevTest Workstation now requires a user
name and password.
If you have test cases that use the pfpower user name, update them to change the user name to
caipower.
22-Jul-2016
186/2016
Note: All SDK components must be compiled with Java 8 to run in DevTest 9.5.
This guide is organized by component. It provides the relevant history of each component, starting
with LISA 4.0 or the version in which the component was introduced.
The most effective way to use this guide is as follows:
1. Identify the section for your component type.
2. Identify the subsection for your current version.
3. Follow the notes on the API changes through the latest version and update your code as
required.
SDK Documentation
The following SDK documentation is available:
Using the SDK (see page 1275)
JavaDocs for DevTest Solutions are available in the doc folder of your installation directory.
22-Jul-2016
187/2016
Assertion Updates
SDK Assertion components extend com.itko.lisa.test.Assertion.
4.0 to 4.5 (see page 189)
4.5 to 4.6 (see page 189)
4.6 to 5.0 (see page 189)
5.0 to 6.0 (see page 189)
6.0 to 6.1 (see page 189)
6.1 to 7.0 (see page 189)
7.0 to 7.1 (see page 189)
7.1 to 7.5 (see page 190)
7.5 to 8.X (see page 190)
8.X to 9.X (see page 190)
22-Jul-2016
188/2016
4.0 to 4.5
No changes that affect SDK components.
4.5 to 4.6
No changes that affect SDK components.
4.6 to 5.0
com.itko.lisa.test.Assertion now also implements the com.itko.lisa.model.IWriteXML interface,
which affects how data is persisted. Few SDK components need to override the framework level
behavior. For more information, see the JavaDocs in the doc folder of your installation directory.
Added a reference to the com.itko.lisa.test.TestCase class, the test case on which the assertion
operates, and corresponding getters and setters getTc() and setTc(TestCase tc).
Added getEvaluatedlLongMsg(), which provides a more user-friendly error message when the
assertion fails.
Added global Assertion support with corresponding methods:
public void markAssertionAsGlobal(boolean isGlobal)
public boolean isGlobalAssertion()
public boolean isScopeLocal()
public boolean isScopeGlobal()
5.0 to 6.0
No changes that affect SDK components.
6.0 to 6.1
com.itko.lisa.test.Assertion now also implements the com.itko.lisa.test.NameGenerator interface,
which controls how default component names are generated. This change does not affect the legacy
SDK components. For more information, see the JavaDocs in the doc folder of your installation
directory.
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
22-Jul-2016
189/2016
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
The com.itko.util.ParameterList class was deprecated in release 9.5. For more information, see
Parameters and Parameter Lists (see page 1289).
Companion Updates
SDK Companion components extend com.itko.lisa.test.SimpleCompanion.
4.0 to 4.5 (see page 190)
4.5 to 4.6 (see page 190)
4.6 to 5.0 (see page 190)
5.0 to 6.0 (see page 191)
6.0 to 6.1 (see page 191)
6.1 to 7.0 (see page 191)
7.0 to 7.1 (see page 191)
7.1 to 7.5 (see page 191)
7.5 to 8.X (see page 191)
8.X to 9.X (see page 191)
4.0 to 4.5
No changes that affect SDK components.
4.5 to 4.6
No changes that affect SDK components.
4.6 to 5.0
SimpleCompanion now extends com.itko.lisa.test.CompanionBase instead of implementing the com.
itko.lisa.test.CompanionInterface directly. This update does not directly affect SDK components,
although the following methods were added to the underlying interfaces.
public Object getCustomParams()
public void writeSubXML( PrintWriter ps )
static public void writeSubXML( PrintWriter ps, ParameterList params )
22-Jul-2016
190/2016
5.0 to 6.0
Added public void setParameters ( ParameterList parameters ) method. This method assigns the
parameters, which can contain custom parameters and parameters that are injected by LISA. For
example, {@code type}, which indicates the classname of the companion.
Added protected ParameterList removeDuplicates ( ParameterList plist ) method, which is a
helper method to scrub duplicate Parameter values. This method is called by setParameters().
6.0 to 6.1
No changes that affect SDK components.
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
The com.itko.util.ParameterList class was deprecated in release 9.5. For more information, see
Parameters and Parameter Lists (see page 1289).
Filter Updates
SDK Filter components extend com.itko.lisa.test.FilterBaseImpl.
4.0 to 4.5 (see page 192)
4.5 to 4.6 (see page 192)
4.6 to 5.0 (see page 192)
5.0 to 6.0 (see page 192)
6.0 to 6.1 (see page 192)
6.1 to 7.0 (see page 192)
7.0 to 7.1 (see page 192)
7.1 to 7.5 (see page 193)
7.5 to 8.X (see page 193)
8.X to 9.X (see page 193)
22-Jul-2016
191/2016
4.0 to 4.5
No changes that affect SDK components.
4.5 to 4.6
No changes that affect SDK components.
4.6 to 5.0
The underlying FilterInterface now implements IWriteXML and added the following methods to
support persisting data:
static public void writeXML( PrintWriter pw, ParameterList pl )
public void writeXML( PrintWriter ps )
static public void writeXMLHeader( PrintWriter ps, String type, String valueToFilterPropKey )
protected void writeSubXML( PrintWriter ps )
static public void writeXMLFooter( PrintWriter ps )
Replaced public Collection<FilterNodeConnection> getFilterNodeConnections(ParameterList
params) with public void, gatherFilterStepConnections(String stepName, ParameterList params,
Collection<StepConnection> stepConnections) method. This method returns a Collection of the
ways that a filter can attempt to pass execution to a specific node. This change is unlikely to affect
SDK components.
Added support for global filters, which includes the following methods:
public boolean isScopeLocal()
public boolean isScopeGlobal()
5.0 to 6.0
No changes that affect SDK components.
6.0 to 6.1
Added implementation of the com.itko.lisa.test.NameGenerator interface, which controls how
default component names are generated. This change does not affect the legacy SDK components.
For more information, see the JavaDocs in the doc folder of your installation directory.
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
22-Jul-2016
192/2016
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
The com.itko.util.ParameterList class was deprecated in release 9.5. For more information, see
Parameters and Parameter Lists (see page 1289).
Step Updates
Simple SDK Steps or Nodes implement the com.itko.lisa.test.CustJavaNodeInterface.
4.0 to 4.5 (see page 193)
4.5 to 4.6 (see page 193)
4.6 to 5.0 (see page 193)
5.0 to 6.0 (see page 193)
6.0 to 6.1 (see page 193)
6.1 to 7.0 (see page 194)
7.0 to 7.1 (see page 194)
7.1 to 7.5 (see page 194)
7.5 to 8.X (see page 194)
8.X to 9.X (see page 194)
4.0 to 4.5
No changes that affect SDK components.
4.5 to 4.6
No changes that affect SDK components.
4.6 to 5.0
No changes that affect SDK components.
5.0 to 6.0
No changes that affect SDK components.
6.0 to 6.1
No changes that affect SDK components.
22-Jul-2016
193/2016
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
The com.itko.util.ParameterList class was deprecated in release 9.5. For more information, see
Parameters and Parameter Lists (see page 1289).
5.0 to 5.0.25
LISA 5.0.25 introduced the com.itko.lisa.vse.stateful.common.DataProtocolFilter to support more
complex data configuration requirements. Models that were created in LISA before 5.0.25 do not
open in LISA 7 and must be re-created.
5.0 to 6.0
Added public void updateUnknownStatelessResponse(Response response), which is used by
subclasses to update the given default response for unknown stateless requests.
22-Jul-2016
194/2016
6.0 to 6.1
Added the com.itko.lisa.vse.stateful.protocol.DataProtocolConfiguration object with getters and
setters: public DataProtocolConfiguration getConfig() and protected void setConfig
(DataProtocolConfiguration config). For more information, see the JavaDocs in the doc folder of your
installation directory.
6.1 to 7.0
Added com.itko.lisa.common.LisaComponentConfig, which is extended by type-specific
configuration objects that are used to persist unparsed and parsed. That is, data that has been
processed by TestExec.parseInState() for all SDK components. com.itko.lisa.vse.stateful.protocol.
DataProtocolConfiguration still exists and should only be used for DataProtocols.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
5.0 to 6.0
Transport Protocols became extensible by the SDK.
22-Jul-2016
195/2016
6.0 to 6.1
Added the com.itko.lisa.vse.stateful.protocol.DataProtocolConfiguration object, which can also
be used with Transport Protocols, with getters and setters: public DataProtocolConfiguration
getConfig() and protected void setConfig(DataProtocolConfiguration config). For more
information, see the JavaDocs in the doc folder of your installation directory.
Added protected TestExec getTestExec() to provide consistent access to TestExec.
Added public RecorderSelector.SmartWizardStep getSmartWizardStep(RecordingWizard wizard,
WizardPhase phase)
6.1 to 7.0
Added com.itko.lisa.common.LisaComponentConfig which is extended by type-specific
TransportProtocol configuration objects that are used to persist unparsed and parsed. That is, data
that has been processed by TestExec.parseInState().
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
22-Jul-2016
196/2016
6.0.7
Deprecated public String getBodyText(), replaced by getBodyAsString().
Deprecated public void setBodyText( String text ), replaced by setBody(String body).
Deprecated public byte[] getBodyBytes(), replaced by getBodyAsByteArray().
Deprecated public void setBodyBytes( byte[] body ), replaced by setBody(byte[] body).
6.0 to 6.1
No changes that affect SDK components.
6.1 to 7.0
Added the com.itko.lisa.asset.vse.IBodyCarrier interface.
Implemented a more informative toString() method.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
Request Updates
com.itko.lisa.vse.stateful.model.Request represents the request side of a VSEtransaction.
5.0 to 6.0 (see page 198)
6.0 to 6.1 (see page 198)
6.1 to 7.0 (see page 198)
7.0 to 7.1 (see page 198)
7.1 to 7.5 (see page 198)
7.5 to 8.X (see page 198)
8.X to 9.X (see page 198)
22-Jul-2016
197/2016
5.0 to 6.0
LISA 5.0 persisted Service Images to a database. LISA 6.0 and later persists Service Images to the file
system. This change resulted in a large impact to the Request API, but not in areas that affect SDK
components. For more information, see the JavaDocs in the doc folder of your installation directory.
6.0 to 6.1
See Body Carrier (see page 196) for details about setting and accessing the Request body.
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
Response Updates
com.itko.lisa.vse.stateful.model.Response represents the response side of a VSE transaction during
recording.
5.0 to 6.0 (see page 198)
6.0 to 6.1 (see page 199)
6.1 to 7.0 (see page 199)
7.0 to 7.1 (see page 199)
7.1 to 7.5 (see page 199)
7.5 to 8.X (see page 199)
8.X to 9.X (see page 199)
5.0 to 6.0
LISA 5.0 persisted Service Images to a database. LISA 6.0 and later persists Service Images to the file
system. This change resulted in a large impact to the Response API, but not in areas that affect SDK
components. For more information, see the JavaDocs in the doc folder of your installation directory.
22-Jul-2016
198/2016
6.0 to 6.1
See Body Carrier (see page 196) for details about setting and accessing the Response body.
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
5.0 to 6.0
LISA 5.0 persisted Service Images to a database. LISA 6.0 and later persists Service Images to the
file system. This change resulted in a large impact to the Response API, but not in areas that
affect SDK components. For more information, see the JavaDocs in the doc folder of your
installation directory.
public TransientResponse(Response r) was replaced by com.itko.lisa.vse.stateful.model.
Response.createTransientCopy().
22-Jul-2016
199/2016
6.0 to 6.1
See Body Carrier (see page 196) for details about setting and accessing the TransientResponse body.
6.1 to 7.0
See Body Carrier (see page 196) for details about setting and accessing the TransientResponse body.
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
6.0 to 6.1
No changes that affect SDK components.
6.1 to 7.0
No changes that affect SDK components.
7.0 to 7.1
No changes that affect SDK components.
22-Jul-2016
200/2016
7.1 to 7.5
No changes that affect SDK components.
7.5 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
API Notes
5.0 to 6.0 (see page 201)
6.1 to 7.0 (see page 201)
7.0 to 7.1 (see page 201)
7.1 to 7.5 (see page 201)
7.5.1 (see page 202)
7.5.1 to 8.X (see page 202)
8.X to 9.X (see page 202)
5.0 to 6.0
Changed the signature in com.itko.lisa.vse.stateful.DelayedResponder from invokeLater(uniqueId,
action, delayTime) to invokeLater(testExec, action, delayTime).
6.1 to 7.0
Removed the following methods from com.itko.util.StrUtil. ModuleCore.resource.get(),
ModuleVSE.resource.get(), Module*.resource.get().. methods. Replace these methods.
public static String get(String key, Object[] args)
public static String get(String key)
Removed the following methods from com.itko.util.Strings. ModuleCore.resource.get(),
ModuleVSE.resource.get(), Module*.resource.get().. methods. Replace these methods.
public static String get(String key)
7.0 to 7.1
No changes that affect SDK components.
7.1 to 7.5
No changes that affect SDK components.
22-Jul-2016
201/2016
7.5.1
Added a new getListenersCount() method that produces a count of listeners.
Originally, this function was performed by the getListeners() API method, but this method was
deprecated in 6.0. If you are using the getListeners() method, update your tests to use the new
getListenersCount() method.
7.5.1 to 8.X
No changes that affect SDK components.
8.X to 9.X
No changes that affect SDK components.
22-Jul-2016
202/2016
Getting Started
This section contains an overview of DevTest Portal, tutorials for each functional area of DevTest
Solutions, and a glossary.
DevTest Portal (see page 204)
CA Application Test Tutorials (see page 213)
Mobile Testing Tutorials (see page 303)
CA Service Virtualization Tutorials (see page 311)
CA Continuous Application Insight Tutorial (see page 332)
Glossary (see page 335)
DevTest Solutions consists of the following products:
CA Application Test
Provides an automated testing solution for distributed application architectures.
Allows product teams to design and execute automated unit, functional, regression, integration,
load, and performance tests for multiple layers of a distributed architecture.
Allows automated testing at the UI layer and for the headless services behind the UI that provide
business logic and data to the application.
CA Service Virtualization
Removes constraints throughout the SDLC by modeling and simulating unavailable or dependent
systems.
Enables parallel development and testing to reduce cycle times, detect defects early and increase
IT productivity.
Reduces demand for lab infrastructure and software to avoid costs and reduce configuration
effort.
Shifts quality left for higher performance and less risk.
22-Jul-2016
203/2016
Automating your Automation: Eliminates manual work by automating virtual service and testcase.
Point-and-Click Defect Tickets: Capture detailed business transactions for the identified session
and build virtual environments for easy defect reproduction.
DevTest Portal
DevTest Portal is a web-based application that is intended to become the primary user interface for
DevTest Solutions. The portal provides capabilities for some of the most-used workflows for DevTest
products. Over time, CA will enhance the functionality of DevTest Portal and will eventually sunset
the other interfaces in the DevTest product line, including DevTest Workstation.
This page describes the available functionality. For a quick summary, see DevTest Portal Functionality
(see page 74).
This page also describes the All Resources window and how to manage projects and tabs.
Note: For information about the server components that must be running, see Start the
DevTest Processes or Services (see page 145).
One possible error message indicates that the user cannot be authenticated and that you should
make sure the registry service is running. If you receive this message and the registry service is
running, the cause might be a slow network. Analyze your network for impaired performance.
Follow these steps:
1. Complete one of the following actions:
Open a supported browser and enter http://localhost:1507/devtest.
If the registry is on a remote computer, replace localhost with the name or IP address of
the remote computer.
If the port number was changed from the default value 1507, use the new port number.
Select View, DevTest Portal from DevTest Workstation.
2. Enter your user name and password.
3. Click Log in.
22-Jul-2016
204/2016
Navigation Menu
The navigation menu appears on the left.
The icon in the left portion of the header area lets you collapse, hide, and restore the navigation
menu.
The navigation menu contains the following sections:
Home
Display the home page.
Create
Create API tests and virtual services.
API Test
Virtualize Website (HTTP/S)
Virtualize JDBC
Virtualize using RR pairs
Copybook Bundle
22-Jul-2016
205/2016
Tip: When you create artifacts, they are saved into the project that is shown in the Current
Project drop down. You can select another project before you create.
Manage
Manage API tests, test cases, test suites, and virtual services.
Tip: When you manage artifacts, they are chosen from the project that is shown in the
Current Project drop down. You can select another project.
All Resources
API Tests
Tests
Test Suites
Virtual Services
Copybook Bundles
Data Sets
Monitor
Monitor tests and virtual services.
Monitoring Tests
Virtual Service Environments
CVS
Application Insight
Analyze and document transactions with CAI. You can also manage tickets.
Analyze Transactions
Document Transactions
Manage Tickets
Reporting
View and filter reports.
CAI Top N and Metrics
Testing
Virtual Service Metrics
22-Jul-2016
206/2016
Home Page
The home page contains a dashboard of portlets that let you monitor the activity of your application.
Each portlet displays information of a DevTest component that can be manually refreshed.
Note: The first time that you click a Getting Started link, a login dialog opens. Your login to
view the documentation persists throughout your session on DevTest Portal.
207/2016
Manage Projects
You can manage projects from DevTest Portal.
To add a project:
1.
22-Jul-2016
208/2016
2. Click Delete
3. Click Yes.
Tip: To delete multiple projects simultaneously, select more than one project and
click Delete Projects.
To copy a project:
1. Click Manage Projects
.
The Manage Projects window appears.
2. Click Copy
209/2016
4. (Optional) Select the Force to merge conflicted files check box to indicate that duplicate files
from the imported MAR should override files of the same name that are already in the
project.
5. Click OK.
6. A window displays a list of all resources for which the upload failed.
Note: You can select and upload one MAR file at a time. If you upload the wrong
MAR file, remove it and select the correct one.
When uploading a MAR to a project, if the MAR contains any entries that do not belong to any
DevTest project folders in the MAR, they are considered as unusable files, and they are not
uploaded.
Manage Tabs
You can manage multiple tabs by changing the order that they appear or by closing them. The Home
tab cannot be closed when it is the only open tab. If you close all tabs, the Home tab opens.
The following options for closing tabs are available:
Close tab
This option closes the selected tab.
Close all other tabs
This option closes all the other tabs.
Close tabs to the right
This option closes the tabs to the right of the selected tab.
Follow these steps:
1. To move a tab, drag-and-drop the tab to the new location.
2. To close tabs, right-click a tab and select an option.
22-Jul-2016
210/2016
4. (Optional) To change filter options for the Test: Current Status portlet, select a userid from
the Executed by drop-down or select a timeframe from the timeframe drop-down, click Save,
and click Close.
5. To remove a portlet, point to Add or remove dashboard content
check box or click X in the portlet.
6. To add a portlet, point to Add or remove dashboard content
.
.
Update Preferences
You can set preferences to view help tips and select a default language from the Preferences dialog.
The Preferences dialog is accessible by clicking the down arrow next to the user name in
DevTestPortal.
To change your password:
1. Open DevTest Portal.
2. Select Set Password.
The Set Password dialog opens.
3. Enter your new password in the Password field, then in the New Password field.
22-Jul-2016
211/2016
Note: When using a browser with an automatic translation capability, you must set the
language in the Preferences dialog.
22-Jul-2016
212/2016
213/2016
214/2016
22-Jul-2016
2.
215/2016
2. Click
Add Step, select Utilities, and select Output Log Message.
A step named Output Log Message is added to the model editor.
3. Right-click the Output Log Message step and select Rename.
4. Change the name to My Output Log Message.
5. Make sure that My Output Log Message is still selected. In the right pane, click the arrow next
to Output Log Message.
The Output Log Message tray opens.
22-Jul-2016
216/2016
2. Click
Add Step, select Utilities, and select Output Log Message.
A step with the name Output Log Message is added to the model editor and the Output Log
Message tray opens.
3. In the log editor, delete the placeholder text.
4. Copy and paste the following text into the log editor:
Thecurrentvalueofconfig_propis:{{config_prop}}.
ThecurrentvalueofMyOutputLogMessage_step_prop:{{MyOutputLogMessage_step_pr
op}}.
Note: The log message does not change the values of config_prop or
MyOutputLogMessage_step_prop.
5. Close the second log message step by clicking the arrow at the upper left corner of the
window.
6. From the main application toolbar, click Save, or select File, Save, tutorial1.
217/2016
2. To view the response, click the Response tab. Although you set config_prop to 42 in the
project.config file, you changed the value to 21 in the My Output Log Message step, and the
value did not change in the Output Log Message step. The value of the
MyOutputLogMessage_step_prop property also carried over from the My Output Log
Message step to the Output Log Message step.
3. To view the current and previous property values, click the Properties tab.
4. When you are done, close the tutorial1 and project tabs.
Review
In this tutorial, you took a first look at properties. You saw that properties are denoted by using a
special syntax, {{property_name}}. You can set properties by using a variation of this syntax;
{{property_name=value}}. After you set a property, use or modify it in subsequent steps in a test
case.
In this tutorial, you:
Learned how to create and save a test case
Learned how to add a simple test step (Output Log Message)
Used a configuration to store properties
Saw a brief glimpse of the Interactive Test Run utility
218/2016
The first row specifies the names of the properties to which this data is assigned (month, day,
year). The remaining rows specify the data that is read and used in the test case. Two of the
rows include a property with the name yearglobal.
3. Save the file as dates.txt.
22-Jul-2016
4.
219/2016
4. In the Project panel, right-click the Data folder in the My Tutorials project and select Import
Files.
5. Navigate to the folder where you saved the dates.txt file and select the file name.
6. Click Open. The dates.txt file now appears in the Data folder.
2. Click
Add.
The Add step menu is displayed.
3. Select Utilities and select Output Log Message.
A step with the name Output Log Message is added to the model editor.
4. Right-click Output Log Message and select Rename. Change the name to DSstep1.
22-Jul-2016
220/2016
Note: The curly brackets are important. The test case runs correctly only if they are
included.
8. To close the Output Log Message tray, click anywhere in the model editor.
9. Click Save.
1. Click
Add.
The Add step menu is displayed.
2. Select Utilities and select Output Log Message.
A step with the name Output Log Message is added to the model editor.
3. Right-click Output Log Message and select Rename. Change the name to DSstep2.
4. In the right pane, click the arrow next to Output Log Message.
The Output Log Message tray opens.
5. Delete the placeholder text.
6. Enter the following log message:
Dateis:{{month}}/{{day}}/{{year}}
7. To close the Output Log Message tray, click anywhere in the model editor.
8. Click Save.
221/2016
Start ITR.
4. From the Common DataSets list, select Read Rows from a Delimited Data File.
The data set is added to the test step.
The data set editor opens in the right pane.
5. In the data set editor, set the name to DatesDS.
6. Click
File Location, then navigate to and select the dates.txt file in the
LISA_HOME\Projects\My Tutorials\Data directory.
7. Click Test and Keep.
If the test is successful, the Data Set Editor window returns a "Test successful" message.
8. Click OK.
22-Jul-2016
12.
222/2016
Tutorial 2 - Review
In this tutorial, you:
Created a comma-delimited data set
Used the data set for running a simple test case
22-Jul-2016
223/2016
22-Jul-2016
224/2016
Note: The curly brackets are important. The test case runs correctly only if they are
included.
4. Click Save.
Add.
22-Jul-2016
225/2016
5. The new assertion that is applied to DSstep1 is added to the Assertions tab.
The assertion editor opens.
6. In the assertion editor, do the following:
a. In the If list, select True.
b. In the then list, select Go To: DSstep2.
c. In the Log field, enter The string 1999 was found.
d. In the Contains String field, enter 1999.
22-Jul-2016
226/2016
7. Click Save.
Note: The DSstep2 step is executed next when DSstep1 encounters a date in which
the year is 1999.
5. Click the Properties tab and review the behavior of the properties.
22-Jul-2016
227/2016
5.
DevTest Solutions - 9.5
6. Click the Test Events tab and review the events that were generated.
22-Jul-2016
228/2016
Add.
6. In the model editor, double-click DSstep2 and add the following text to the end of the output
log message:
ThevalueofDSstep1_response_propis:{{DSstep1_response_prop}}.
7. Click Save.
22-Jul-2016
229/2016
4.
DevTest Solutions - 9.5
5. Click the Properties tab and observe where the DSstep1_response_prop property is created
and modified.
6. Click the Test Events tab and review the events that were generated.
22-Jul-2016
230/2016
Tutorial 3 - Review
In this tutorial, you:
Took a first look at filters and assertions.
Opened and modified an existing test case.
Learned how to add a simple assertion.
Learned how to add a simple filter.
Used the Interactive Test Run utility to validate that the assertion and filter worked as expected.
More Information
DevTest provides filters and assertions to cover most of the situations that you encounter in your test
case development. If no appropriate filter exists, DevTest provides a mechanism for developing
custom filters and assertions through the Software Developers Kit (SDK). See Using the SDK (see page
1275) for more information.
231/2016
1. Click
Add Step.
The Add step menu is displayed.
2. Select Java/J2EE and then select Dynamic Java Execution.
The Dynamic Java Execution editor opens.
3. In the Local JVM Settings area, ensure that Make New Object of Class is selected.
4. In the field to the right of Make New Object of Class, type java.util.Date.
22-Jul-2016
5.
232/2016
7. Click Next.
8. Click Finish.
The Complex Object Editor opens.
22-Jul-2016
233/2016
Now you have a Java object to manipulate in the Complex Object Editor.
The type (class) of the currently loaded object, followed by the response from calling the
'toString' method of the object.
The Constructor that was called. This icon is shown if multiple constructors exist.
22-Jul-2016
234/2016
The input parameters (type and current value) for the enclosing method.
The return value (current value if the call has been executed) for the enclosing method.
The contents of the right panel vary depending on what is selected in the left panel.
To call the Java object:
1. In the right panel of the Complex Object Editor, click the Call Sheet tab.
The Call Sheet tab shows the available methods that you can call.
2. Double-click the setYear() method. Or, you can select the setYear() method and click
Add selected method to Object Call Tree.
22-Jul-2016
235/2016
Screenshot of the Call Sheet tab for the Dynamic Java Execution step.
The setYear() method is added to the Object Call Tree. The right panel now displays the Call
tab and Docs tab.
The Call tab lists the argument information.
3. In the Value field for arg1, enter 104.
4. Click Execute.
22-Jul-2016
236/2016
Screenshot of Dynamic Java Execution step COE Call Tree tab for Tutorial 4
22-Jul-2016
237/2016
Screenshot of Dynamic Java Execution step COE Data Sheet tab for Tutorial 4
22-Jul-2016
238/2016
4. Click Execute.
5. Click Save.
1. Click
Show model properties on the test case toolbar. Or, you can select Help, View
Properties from the main menu.
2.
22-Jul-2016
239/2016
4. Click Close.
Tutorial 4 - Review
In this tutorial, you:
Created a test step to manipulate a Java object of java.util.Date type.
Used the Complex Object Editor to manipulate the Java object.
Learned how to add inline filters to objects and save results into a property.
240/2016
22-Jul-2016
241/2016
22-Jul-2016
242/2016
22-Jul-2016
243/2016
6. To create two more accounts: Checking and Auto_Loan, repeat the preceding steps. Set the
initial balance of the checking account to $600.00. Set the initial balance of the auto loan to
$10000.00.
Do not use commas in the Initial Balance field.
22-Jul-2016
244/2016
6.
DevTest Solutions - 9.5
22-Jul-2016
245/2016
Tutorial 5 - Review
In this tutorial, you:
Logged in to the LISA Bank application.
Created new accounts.
Closed an account.
246/2016
247/2016
22-Jul-2016
248/2016
2. Click Login.
The welcome page appears.
3. In the Accounts section, click the account number of the checking account.
The Account Activity window appears.
4. Click Deposit.
22-Jul-2016
249/2016
5. In the Deposit Money area, enter the password golisa, a description of the transaction, and
the amount for this deposit.
6. Click Deposit.
22-Jul-2016
250/2016
The Account Activity window shows the updated balance and a record of the deposit.
22-Jul-2016
251/2016
22-Jul-2016
252/2016
22-Jul-2016
253/2016
The model editor is populated with a new test case, having all the transaction information
from the saved recording. Each test step in the test case represents an HTTP request.
22-Jul-2016
254/2016
The View tab shows the rendered pages while the ITR replays the deposit into the checking
account.
The Source tab shows the HTML code for the page that is captured in the step.
DevTest acts as the browser and sends the same HTTP requests to the web server.
4. Close the ITR utility.
22-Jul-2016
255/2016
256/2016
4. From the Common Datasets list, select Create a Numeric Counting Data Set.
The data set editor opens in the right pane.
5. Enter the following values:
a. In the Name field, enter DepositsDS.
b. In the At end field, select the Execute option and select End the Test from the list.
c. In the Property Key field, enter ds_counter.
d. In the From field, enter 100.
e. In the To field, enter 105.
f. In the Increment field, enter 1.
7. Click OK.
22-Jul-2016
257/2016
2. In the Stage a Quick Test window, ensure that If test ends, restart it is selected.
22-Jul-2016
258/2016
2.
DevTest Solutions - 9.5
3. Click OK.
The Test Monitor opens, but the test has not been started yet.
4. Click OK.
22-Jul-2016
259/2016
5.
DevTest Solutions - 9.5
Stage Test Case Current Interval Metrics window while test is running
22-Jul-2016
260/2016
Tutorial 6 - Review
In this tutorial, you used a numeric counting data set to provide input to the recorded test.
You:
Copied a test case and added a numeric counting data set.
Modified the POST Parameters for the recorded deposit.
Staged a quick test.
261/2016
22-Jul-2016
262/2016
6. Click Save.
7. In the Project pane, right-click the config7 configuration and select Make Active.
The configuration now appears in green.
2. Click
Add Step.
263/2016
1. From the Select Server From List drop-down list, select JBoss 3.2/4.0.
2. In the Host Name or IP Address field, enter localhost.
3. Click Next.
The list of JNDI names is retrieved from the EJB server.
2. Click Next.
The Complex Object Editor opens.
22-Jul-2016
264/2016
4. Click
22-Jul-2016
265/2016
22-Jul-2016
266/2016
Important! You can only add User and Password once. To execute this tutorial more than
once, change the values that are associated with User and Password.
267/2016
The parameters to the method are displayed in the Object Call Tree, next to the Input
Parameter
icon. The return value of this method is the value of the User field, "Lisa7,"
in the Object Call Tree.
268/2016
changes to null and an error is produced because the user has already been
22-Jul-2016
269/2016
22-Jul-2016
270/2016
The return
4. Click Save.
22-Jul-2016
271/2016
Tutorial 7 - Review
In this tutorial, you:
Created a test case consisting of two EJB test steps.
The EJB object was loaded from the example application on the demo server.
Created an EJB test step and loaded an EJB.
Used the Complex Object Editor to manipulate EJB objects.
272/2016
2. Click
Add Step.
22-Jul-2016
273/2016
Note: The WSSERVER and WSPORT properties represent the server and port.
http://localhost:8080/itko-examples/services/UserControlService?wsdl
22-Jul-2016
274/2016
22-Jul-2016
275/2016
22-Jul-2016
276/2016
22-Jul-2016
277/2016
Tutorial 8 - Review
In this tutorial, you:
Created a test case with the Web Service Execution (XML) test step.
Executed the addUser operation.
Viewed the request and response for this operation.
278/2016
22-Jul-2016
279/2016
4. Click Save.
2. Click
Add Step.
22-Jul-2016
280/2016
22-Jul-2016
281/2016
User ID
{{DBUserID}}
Password
{{DBPwd}}
3. Click OK.
22-Jul-2016
282/2016
3. Click OK.
The Result Set tab is displayed.
22-Jul-2016
283/2016
3. From the drop-down list, select the Fail the Test option.
If the last name that you selected is not found, then the test fails.
22-Jul-2016
284/2016
Screenshot of Generate JDBC Result Set Value Assertion dialog for Tutorial 9
4. Click OK.
5. Click Save.
Start ITR.
2. Click
Execute Next Step.
The test runs successfully. The result set is shown in the Response tab.
22-Jul-2016
285/2016
Screenshotof Assertions tab for JDBC Select Users step for Tutorial 9
22-Jul-2016
286/2016
Add.
4. From the Database Filters submenu, select Extract Value from JDBC Result Set.
The filter editor opens.
5. In the Column field, enter 1. Or, you can enter the actual column name, which is LNAME.
6. In the Row field, enter 3.
This field is zero-based. Therefore, the value 3 refers to the fourth row.
7. In the Property field, enter DBProperty.
22-Jul-2016
287/2016
Screenshot for Parse JDBC Result Sset for Value dialog for Tutorial 9
8. Click Save.
22-Jul-2016
288/2016
Tutorial 9 - Review
In this tutorial, you created a test case to query a database. You used the Users table from the
Apache Derby database that accompanies the applications on the demo server. You learned how to:
Connect to the database.
Execute a SQL query against the database.
Add assertions and filters.
22-Jul-2016
289/2016
290/2016
You used many of these steps in tutorials 6 through 9. In this tutorial, you use all the test steps to
build a more realistic test case involving several layers of the application.
22-Jul-2016
291/2016
2. In the Stage a Quick Test dialog, complete the following required information:
Run Name: Enter a unique name (Tutorial10QuickTest).
Number of Instances: Enter a number of users to run the test concurrently (4).
Stage Instances To: Select the name of the coordinator server or stage it locally.
To restart the test, select If test ends, restart it.
3. Click OK.
The Test Run window opens, but the test has not started yet.
22-Jul-2016
292/2016
22-Jul-2016
293/2016
5.
294/2016
Tutorial 10 - Review
In this tutorial, you tested the multi-tier-combo example using a quick test. You learned how to:
Review a test case containing several types of test steps.
Configure and run a test in the quick test feature.
Examine a report that is generated from the test run.
295/2016
Note: Since Forward Cars uses port 3434, that port cannot be in use by any other
application. If this port is not available, Forward Cars does not start successfully.
22-Jul-2016
296/2016
3. To clear the search, click the Make name (Audi) in the left column.
22-Jul-2016
297/2016
Note: To identify key terms that you can search for, click View Details for any car. Any of
the unique identifiers that display here can be used in a text search.
22-Jul-2016
298/2016
6. Set the host address to 7000 again, then click Set ESB.
7. Refresh the web browser.
22-Jul-2016
299/2016
The message car created displays at the top of the page and the new car is visible at the
22-Jul-2016
300/2016
22-Jul-2016
301/2016
The home page contains buttons for various actions that you can perform: Inventory Search, VIN
Lookup, Loan Application, Loan Status, and Log Out.
Note: Any time that you refresh the browser window, you must log in again.
22-Jul-2016
2.
302/2016
Tutorial 11 - Review
In this tutorial, you learned how to:
Start Forward Cars
Perform an inventory search
Change the inventory database location
Add a car
Edit a cars information
Delete a car
Look up a cars History Report through the VIN
Log in to Forward Cars
Apply for an auto loan
Check on your loan status
Log out from Forward Cars
22-Jul-2016
303/2016
Note: This tutorial assumes that DevTest Registry and Enterprise Dashboard are already
running. If you are running DevTest Server on your local machine and need help starting
the registry and dashboard, see The Registry (see page 346) and Use the Enterprise
Dashboard (see page 1536).
22-Jul-2016
304/2016
Note: If you created the MyMobileTutorials project in a previous tutorial, skip to Step 3,
Import Application Files into the Workspace.
22-Jul-2016
305/2016
Note: Do not perform these actions in the mobile simulator directly. All actions that
are performed in the recorder window are sent to the simulator automatically.
9. Click Stop Recording when you have captured all of the actions for your test.
The recorder window and the mobile simulator close. Your new test case is populated with
test steps that represent the mobile actions that are captured during the recording. Each test
step represents the actions that you performed on a specific screen in the application.
10. To view the details of each step:
a. Click the test step to review.
22-Jul-2016
b.
306/2016
b. Click Mobile testing step in the element tree on the right to expand the details for the
step.
The Mobile Testing Step tab opens and shows a screenshot of the test application. The
Actions section at the top of the tab shows the individual actions that are performed in
the test step.
c. To view the screenshot associated with a specific action, click the action in the Actions
section.
For more information about modifying a recorded test step, see Modify Mobile Test
Steps (see page 1948).
For more information about adding assertions to your test step, see Add an Assertion
to a Mobile Test Step (see page 481).
Step 5 - Run the Test Case in the Interactive Test Run Utility
Follow these steps:
1. Open the test case from Step 5 - Record a Test Case (if it is not already open).
2. Click ITR
on the toolbar.
Note: Select whether to start a new ITR run or open a previous ITR run (if you have
run the ITR before).
The mobile simulator window opens and DevTest runs the test steps. The mobile application
is visible on the simulator while the test is running.
When the test is complete, a message opens indicating the test is complete. The simulator
window closes.
4. Click OK.
For more information about using the ITR, see Running Test Cases and Suites (see page 583) .
307/2016
Note: This tutorial assumes that DevTest Registry and Enterprise Dashboard are already
running. If you are running DevTest Server on your local machine and need help starting
the registry and dashboard, see The Registry (see page 346) and Use the Enterprise
Dashboard (see page 1536).
Note: If you created the MyMobileTutorials project in a previous tutorial, skip to Step 3,
Import Application Files into the Workspace.
22-Jul-2016
308/2016
309/2016
Note: Do not perform these actions in the mobile simulator directly. All actions that
are performed in the recorder window are sent to the simulator automatically.
9. Click Stop Recording when you have captured all of the actions for your test.
The recorder window and the mobile simulator close. Your new test case is populated with
test steps that represent the mobile actions that are captured during the recording. Each test
step represents the actions that you performed on a specific screen in the application.
10. To view the details of each step:
a. Click the test step to review.
b. Click Mobile testing step in the element tree on the right to expand the details for the
step.
The Mobile Testing Step tab opens and shows a screenshot of the test application. The
Actions section at the top of the tab shows the individual actions that are performed in
the test step.
c. To view the screenshot associated with a specific action, click the action in the Actions
section.
For more information about modifying a recorded test step, see Modify Mobile Test
Steps (see page 1948).
For more information about adding assertions to your test step, see Add an Assertion
to a Mobile Test Step (see page 481).
Step 5 - Run the Test Case in the Interactive Test Run Utility
Follow these steps:
1. Open the test case from Step 5 - Record a Test Case (if it is not already open).
22-Jul-2016
2.
310/2016
2. Click ITR
on the toolbar.
Note: Select whether to start a new ITR run or open a previous ITR run (if you have
run the ITR before).
The mobile simulator window opens and DevTest runs the test steps. The mobile application
is visible on the simulator while the test is running.
When the test is complete, a message opens indicating the test is complete. The simulator
window closes.
4. Click OK.
For more information about using the ITR, see Running Test Cases and Suites (see page 583) .
22-Jul-2016
311/2016
22-Jul-2016
312/2016
2.
Note: Because Forward Cars uses port 3434, that port cannot be in use by
any other application. If this port is not available, Forward Cars does not
start successfully.
22-Jul-2016
3.
313/2016
Step 7 - Run a Baseline REST-based Test Against the Live Forward Cars Application
Follow these steps:
1. From the left nav bar, select Manage, Tests.
The Manage Tests tab appears.
2. In the Actions column beside the cars-baseline-rest-test test, select the Options icon, then
select Run with Options.
The Run Test Case window appears.
3. In the Configuration field, verify that the live-esb.config file is selected.
The live-esb.config file directs that the test run against port 7000, or the port for the live
Forward Cars application.
4. Click Run.
The Monitoring Tests tab opens.
5. When the test has completed, select the VSE tab to monitor the virtual service.
6. Click the Refresh icon at the upper right corner of this screen to refresh the status of the
virtual service.
Notice that the Transaction Count for this virtual service still shows 7, indicating that the test
that just completed did not perform any transactions against the virtual service.
314/2016
22-Jul-2016
315/2016
1.
activemq-client-5.12.1.jar
hawtbuf-1.11.jar
2. Copy them to the following directory:
DEVTEST_HOME\hotDeploy
22-Jul-2016
316/2016
22-Jul-2016
317/2016
318/2016
22-Jul-2016
319/2016
2.
DevTest Solutions - 9.5
3. You can verify the assets to ensure that the recording and playback is set up properly. Doubleclick an asset, then in the asset editor, click the green Verify button.
4. View the log window for a success or failure message.
5. Click VSE Recorder in the main toolbar.
6. On the Basics tab, click the blue folder icon at the bottom left of the window.
7. Navigate to Projects\Cars v9\Data, and select the loan-offers-jms.vrs file. This file contains
the required configuration for the recording.
8. Click Open.
9. On the Basics tab, in the Write image to field, rename the file from newimage to a unique
name.
10. In the Model file field, enter the same unique name with a .vsm extension.
11. Click Next.
The proxy recorder setup page opens. The JMS-related configuration is already established.
Three request channels for the loan are submitted to three different banks, as specified in the
cars-loan.properties file (Step 2). The recorder forwards those requests to the live request
queues, where they are processed by the Forward Cars application. The banks then process
and return the response to the proxy response queue.
12. Click Next to start the recording session.
The recording feedback page opens. The green status icons indicate that the setup was
successful.
13. Keep DevTest Workstation open, with the recording feedback page displayed.
22-Jul-2016
320/2016
321/2016
Prerequisites
The following steps are prerequisites to completing this tutorial:
DevTest Workstation and VSE are installed.
You have reviewed the following pages:
22-Jul-2016
322/2016
22-Jul-2016
323/2016
2. Click ITR
3. To run the test case on the demo server, click Automatically Execute Test
.
When the test completes successfully, you know that the demo server is available and the test
case runs correctly.
4. Close the ITR window.
5. Close the test case by clicking X on the editor tab.
6. Continue with "Step 5 - Create a Config File (see page 325)".
22-Jul-2016
324/2016
Note: The port from the test case (8080) is changed to the listen port for the VSE
Recorder (8001). The recorder can intercept the request and response on the way
to and from the live web service application on port 8080.
22-Jul-2016
325/2016
Screen shot highlighting the Endpoint field on the Add User Object XML test step
3. Continue with "Step 7 - Configure the VSE Recorder (see page 326)".
22-Jul-2016
326/2016
Screenshot of VSI Recorder port selection screen, listening on port 8001 and Target port of 8080
11. Select the Gateway option for the Recorder passthru style.
With these settings completed, you can start recording.
12. Click Next.
22-Jul-2016
327/2016
22-Jul-2016
328/2016
You can open and edit each of these files in DevTest Workstation.
7. To see the virtual service model and virtual service image files, select the Open the service
image and Open the generated virtual service model check boxes.
8. Click Finish.
DevTest closes the recorder and opens the selected files in DevTest Workstation.
9. Continue with "Step 9 - Deploy the VSM (see page 329)".
329/2016
4.
DevTest Solutions - 9.5
are selected. The Group Tag is blank. The Concurrent capacity is set to 1, Think time scale is
at 100%, and If service ends, automatically restart it is selected. Because the Start the service
on deployment check box is selected, the virtual service starts when you deploy it.
To share this model and the configurations, or to deploy it remotely, click Save as MAR to
create a MAR file and distribute the model as necessary. All the prepopulated configurations
are correct, so click Deploy, and the virtual service is deployed and displays in the DevTest
Portal.
VSETutorial virtual service model appears in the VSE tab of the DevTest Portal
5. To return to the DevTest Portal, click the DevTest Portal tab in your browser.
The VSETutorial virtual service model appears in the VSE tab.
The virtual service is started and ready to process transactions, which are tracked in the Txn
Count column. The service initially shows that it has processed 0 transactions.
6. Run the test case and return to this window.
7. Continue with "Step 10 - Test Against the VSM (see page 330)".
Note: You can also stage and execute a test case or suite against the virtual service.
22-Jul-2016
330/2016
3. Right-click the webservices test case in the Project pane and select Stage a Quick Test.
4. Enter 10 for the Number of Instances.
5. Clear the If test ends, restart it check box, and click OK.
6. Click Play with the Test Monitor window open and let the test run.
When you return to the DevTest Portal after running the test case with 10 instances, you see
the transaction count is 33.
22-Jul-2016
331/2016
Prerequisites
Ensure that the following components are running:
Enterprise Dashboard Server
Registry
Demo server
Broker
Portal
22-Jul-2016
332/2016
22-Jul-2016
1.
333/2016
The following graphic shows a path graph for one of the transactions.
22-Jul-2016
334/2016
Glossary
This glossary defines common terms used in the DevTest documentation and user interface.
assertion (see page 336)
asset (see page 337)
audit document (see page 337)
baseline (see page 337)
companion (see page 337)
configuration (see page 337)
Continuous Service Validation (CVS) (see page 337)
conversation tree (see page 338)
coordinator (see page 338)
22-Jul-2016
335/2016
assertion
An assertion is an element that runs after a step and all its filters have run. An assertion verifies that
the results from running the step match the expectations. An assertion is typically used to change the
flow of a test case or virtual service model. Global assertions apply to each step in a test case or
virtual service model. For more information, see Assertions (see page 470).
22-Jul-2016
336/2016
asset
An asset is a set of configuration properties that are grouped into a logical unit. For more
information, see Assets (see page 449).
audit document
An audit document lets you set success criteria for a test, or for a set of tests in a suite. For more
information, see Building Audit Documents (see page 560).
baseline
A baseline is a test case that helps you determine whether a system is still functioning the same way
at a later date. For more information, see Creating Baselines (see page 1151).
companion
A companion is an element that runs before and after every test case execution. Companions can be
understood as filters that apply to the entire test case instead of to single test steps. Companions are
used to configure global (to the test case) behavior in the test case. For more information, see
Companions (see page 492).
configuration
A configuration is a named collection of properties that usually specify environment-specific values
for the system under test. Removing hard-coded environment data enables you to run a test case or
virtual service model in different environments simply by changing configurations. The default
configuration in a project is named project.config. A project can have many configurations, but only
one configuration is active at a time. For more information, see Configurations (see page 444).
22-Jul-2016
337/2016
conversation tree
A conversation tree is a set of linked nodes that represent conversation paths for the stateful
transactions in a virtual service image. Each node is labeled with an operation name, such as
withdrawMoney. An example of a conversation path for a banking system is getNewToken,
getAccount, withdrawMoney, deleteToken. For more information, see Using CA Service Virtualization
(see page 673).
coordinator
A coordinator receives the test run information as documents, and coordinates the tests that are run
on one or more simulator servers. For more information, see Coordinator Server (see page 348).
data protocol
A data protocol is also known as a data handler. In CA Service Virtualization, it is responsible for
handling the parsing of requests. Some transport protocols allow (or require) a data protocol to
which the job of creating requests is delegated. As a result, the protocol has to know the request
payload. For more information, see Using Data Protocols (see page 916).
data set
A data set is a collection of values that can be used to set properties in a test case or virtual service
model at run time. Data sets provide a mechanism to introduce external test data into a test case or
virtual service model. Data sets can be created internal to DevTest, or externally (for example, in a
file or a database table). For more information, see Data Sets (see page 484).
de-identify
De-identifying (formerly called desensitizing) is used to convert sensitive data to user-defined
substitutes. Credit card numbers and Social Security numbers are examples of sensitive data. For
more information, see De-identifying Data (see page 1021).
event
An event is a message about an action that has occurred. You can configure events at the test case or
virtual service model level. For more information, see Understanding Events (see page 563).
22-Jul-2016
338/2016
filter
A filter is an element that runs before and after a step. A filter gives you the opportunity to process
the data in the result, or store values in properties. Global filters apply to each step in a test case or
virtual service model. For more information, see Filters (see page 456).
group
A group, or a virtual service group, is a collection of virtual services that have been tagged with the
same group tag so they can be monitored together in DevTest Portal.
magic date
During a recording, a date parser scans requests and responses. A value matching a wide definition of
date formats is translated to a magic date. Magic dates are used to verify that the virtual service
model provides meaningful date values in responses. An example of a magic date is
{{=doDateDeltaFromCurrent("yyyy-MM-dd","10");/*2012-08-14*/}. For more information, see Magic
Strings and Dates (see page 703).
magic string
A magic string is a string that is generated during the creation of a service image. A magic string is
used to verify that the virtual service model provides meaningful string values in the responses. An
example of a magic string is {{=request_fname;/chris/}}. For more information, see Magic Strings and
Dates (see page 703).
match tolerance
Match tolerance is a setting that controls how CA Service Virtualization compares an incoming
request with the requests in a service image. The options are EXACT, SIGNATURE, and OPERATION.
For more information, see Match Tolerance (see page 700).
22-Jul-2016
339/2016
metrics
Metrics let you apply quantitative methods and measurements to the performance and functional
aspects of your tests, and the system under test. For more information, see Generating Metrics (see
page 566).
navigation tolerance
Navigation tolerance is a setting that controls how CA Service Virtualization searches a conversation
tree for the next transaction. The options are CLOSE, WIDE, and LOOSE. For more information, see
Navigation Tolerance (see page 699).
node
Internal to DevTest, a test step can also be referred to as a node, explaining why some events have
node in the EventID.
path
A path contains information about a transaction that the DevTest Java Agent captured. For more
information, see Using CA Continuous Application Insight (see page 1040).
path graph
A path graph contains a graphical representation of a path and its frames. For more information, see
Path Graph (see page 1075).
22-Jul-2016
340/2016
project
A project is a collection of related DevTest files. The files can include test cases, suites, virtual service
models, service images, configurations, audit documents, staging documents, data sets, monitors,
and MAR info files. For more information, see Project Panel (see page 405).
property
A property is a key/value pair that can be used as a run-time variable. Properties can store many
different types of data. Some common properties include LISA_HOME, LISA_PROJ_ROOT, and
LISA_PROJ_NAME. A configuration is a named collection of properties. For more information, see
Properties (see page 432).
quick test
The quick test feature lets you run a test case with minimal setup. For more information, see Stage a
Quick Test (see page 593).
registry
The registry provides a central location for the registration of all DevTest Server and DevTest
Workstation components. For more information, see Registry (see page 346).
service image
A service image is a normalized version of transactions that have been recorded in CA Service
Virtualization. Each transaction can be stateful (conversational) or stateless. For more information,
see Service Images (see page 692).
simulator
A simulator runs the tests under the supervision of the coordinator server. For more information, see
Simulator Server (see page 349).
staging document
A staging document contains information about how to run a test case. For more information, see
Building Staging Documents (see page 545).
22-Jul-2016
341/2016
stitching
The process by which the DevTest Java Agent assembles partial transactions into complete
transactions.
subprocess
A subprocess is a test case that another test case calls. For more information, see Building
Subprocesses (see page 539).
test case
A test case is a specification of how to test a business component in the system under test. Each test
case contains one or more test steps. For more information, see Building Test Cases (see page 421).
test step
A test step is an element in the test case workflow that represents a single test action to be
performed. Examples of test steps include Web Services, JavaBeans, JDBC, and JMS Messaging. A test
step can have DevTest elements, such as filters, assertions, and data sets, attached to it. For more
information, see Building Test Steps (see page 523).
test suite
A test suite is a group of test cases, other test suites, or both that are scheduled to execute one after
other. A suite document specifies the contents of the suite, the reports to generate, and the metrics
to collect. For more information, see Building Test Suites (see page 566).
think time
Think time is how long a test case waits before executing a test step. For more information, see Add a
Test Step (example) (see page 524) and Staging Document Editor - Base Tab (see page 546).
transaction frame
A transaction frame encapsulates data about a method call that the DevTest Java Agent or a CAI
Agent Light intercepted. For more information, see Business Transactions and Transaction Frames
(see page 1044).
22-Jul-2016
342/2016
22-Jul-2016
343/2016
Using
Using CA Application Test
22-Jul-2016
344/2016
345/2016
Note: DevTest Portal is a web-based application that is intended to become the primary
user interface for DevTest Solutions. The portal provides capabilities for some of the mostused workflows for DevTest products. Over time, CA will enhance the functionality of the
portal and will eventually sunset the other interfaces in the DevTest product line, including
DevTest Workstation. For a quick summary of the functionality available in the portal, see
DevTest Portal Functionality (see page 74).
Using DevTest Portal with CA Application Test (see page 351) provides detailed information about
using the portal to build and run test cases and suites for supported features.
Using DevTest Workstation with CA Application Test (see page 402) provides detailed information
about using DevTest Workstation to build and run test cases and suites for features that have not yet
migrated to the portal.
The Registry
The registry provides a central location for the registration of all DevTest Server and DevTest
Workstation components.
Start the Registry (see page 347)
Create a Named Registry (see page 347)
Change the Registry (see page 347)
The registry tracks the locations of any DevTest run-time components and provides lookup to their
locations for each registered component. The registry also provides the web consoles for server
administration, reporting, CVS, and CA Continuous Application Insight. The common JMS provider
that is used for the component-to-component communication is started and run in the registry
process.
The fully qualified name of the registry is tcp://hostname-or-IP-address:2010/registry-name. For
example:
tcp://localhost:2010/Registry
tcp://myserver:2010/Registry
tcp://myserver.example.com:2010/Registry
22-Jul-2016
346/2016
Valid on UNIX
cdLisa/bin
./Registry-nregistry1
22-Jul-2016
1.
347/2016
1. Select System, Registry, Change DevTest Registry from the main menu.
The Set DevTest Registry dialog appears.
2. Enter the registry name, or open the drop-down list and select a previously used registry.
3. Select or clear the check box.
Selected: The Set DevTest Registry dialog opens when you start DevTest Workstation.
Cleared: DevTest Workstation connects to the last connected registry on startup.
4. Click OK.
Tip: If you see a Too many open files exception in registry.log, especially on Linux, ask
the administrator to increase per-user and system-wide open file limits in /etc/security
/limits.conf and /etc/sysctl.conf.
Do not forget to restart DevTest components afterward.
Coordinator Server
Coordinator servers receive the test run information as documents, and coordinate the tests that run
on one or more simulator servers (see page 349).
Create a Coordinator Server (see page 348)
Monitor Coordinator Servers (see page 349)
When you stage a test, you choose which coordinator server to coordinate the test from. You also
specify a staging document that specifies which simulator servers to use when running instances of
the test. Any coordinator server can launch instances on any simulator server (based on the staging
document).
The coordinator server manages metric collection and reporting, and communicates the test data to
DevTest Workstation for monitoring purposes. A DevTest Server environment can have, and
commonly does have, multiple coordinator servers.
The coordinator server runs tests when presented with a staging document, test case, and
configuration.
The lisa.coordName property sets the default name of a coordinator server.
lisa.coordName=Coordinator
22-Jul-2016
348/2016
The following examples create a coordinator server with the name coordinator1. The associated
registry has the name registry1.
Valid on Windows
cdC:\DevTest\bin
CoordinatorServer-ncoordinator1-mtcp://localhost:2010/registry1
Valid on UNIX
cdDevTest/bin
./CoordinatorServer-ncoordinator1-mtcp://localhost:2010/registry1
You can display the version number by using the --version option.
For information, see Running Server Components as Services (see page 1436).
Simulator Server
Simulator servers run the tests under the supervision of the coordinator server (see page 348).
Create a Simulator Server (see page 350)
Monitor Simulator Servers (see page 350)
Virtual users or test instances are created and run on the simulator servers. The number of virtual
users, and hence the number of simulator servers that are deployed, depend on the nature of the
tests being performed. Each virtual user communicates with the client system.
For large tests with many virtual users, virtual users can be distributed among several simulator
servers.
The lisa.simulatorName property sets the default name of a simulator server.
lisa.simulatorName=Simulator
22-Jul-2016
349/2016
The following examples create a simulator with the name simulator1. The associated registry has the
name registry1.
Valid on Windows
cdC:\DevTest\bin
Simulator-nsimulator1-mtcp://localhost:2010/registry1
Valid on UNIX
cdDevTest/bin
./Simulator-nsimulator1-mtcp://localhost:2010/registry1
You can specify the number of virtual users for this simulator by using the -i option. For example:
Simulator-nsimulator1-mtcp://localhost:2010/registry1-i100
You can display the version number by using the --version option.
When creating a simulator, you can override the default port number by adding a colon and the
nondefault port number to the -n option. For example:
Simulator-ntestSim1:35001
To run multiple simulators, use the command prompt to create the simulators as shown previously.
If the port number is not specified in the name, the simulator tries port 2014 first. If 2014 is taken,
the simulator tries 2015, 2016, and so on, up to port 2024 before stopping.
For more information about port usage, see Default Port Numbers (see page 1428).
For information about running the simulator as a service, see Running Server Components as Services
(see page 1436).
350/2016
Command-Line Utilities
The LISA_HOME\bin directory contains the following command-line utilities:
CAI Command-Line Tool
The PFCmdLineTool command lets you perform various CA Continuous Application Insight tasks
from the command line. For more information, see CAI Command-Line Tool (see page 1223).
CVS Manager
CVS Manager lets you add or remove monitors to the CVS Dashboard through a command-line
option. For more information, see CVS Manager (see page 371).
Make Mar
Make Mar lets you show the contents of MAR info files (stand-alone or in an archive), or create
model archive files from MAR info files. For more information, see Make Mar (see page 581).
Service Image Manager
Service Image Manager is used to import transactions into a service image (new or existing), and
to combine two or more service images. For more information, see ServiceImageManager (see
page 1032).
Service Manager
Service Manager is used to verify the status of, reset, or stop a running server process. For more
information, see Use the ServiceManager (see page 1531).
Test Runner
Test Runner is a "headless" version of DevTest Workstation with the same functionality but no
user interface. For more information, see Test Runner (see page 618).
VSE Manager
VSE Manager is used for managing virtual service environments. For more information, see VSE
Manager Commands (see page 1030).
22-Jul-2016
351/2016
For a quick summary of the functionality available in the Portal, see DevTest Portal Functionality
(see page 74).
Using Workstation with CA Application Test (see page 402) provides detailed information about
using DevTest Workstation to build and run test cases and suites for features that have not yet
migrated to the Portal.
Note: For information about the server components that must be running, see Start the
DevTest Processes or Services (see page 145).
One possible error message indicates that the user cannot be authenticated and that you should
make sure the registry service is running. If you receive this message and the registry service is
running, the cause might be a slow network. Analyze your network for impaired performance.
Follow these steps:
1. Complete one of the following actions:
Open a supported browser and enter http://localhost:1507/devtest.
If the registry is on a remote computer, replace localhost with the name or IP address of
the remote computer.
If the port number was changed from the default value 1507, use the new port number.
Select View, DevTest Portal from DevTest Workstation.
2. Enter your user name and password.
3. Click Log in.
352/2016
More Information:
Create an API Test (see page 353)
Monitor Tests (see page 357)
Manage Test Artifacts (see page 372)
More Information:
Create a Test by Importing R/R Pairs from a Test (see page 354)
Create a Test by Importing R/R Pairs from a File (see page 354)
22-Jul-2016
353/2016
1. From the R/R Pair Editor toolbar, click Import R/R pairs from existing tests
The Load Existing API Tests window opens.
2. The list shows all the projects available on the resource server and the API tests available
under each project.
If you have not created an API test in DevTest Portal, you will not see any items in the dropdown list.
3. To filter the project names, enter a string in the Filter field.
4. To import an API test, select it and click Load.
2. To designate a zip file containing r/r pair files, browse the file system, or drag and drop a zip
file into the window.
22-Jul-2016
354/2016
Note the requirements for the r/r pair files in the Resources section of the window.
3. Select the r/r pair files to import. To select all r/r pair files, select the File Name check box.
4. Click Import.
355/2016
To change the name of a test, double-click the name, enter a new name, and click Enter.
To create an API test, click Create. If the test is created successfully, the new test is automatically
opened in a Test Edit page.
To create the API test and run it, click Create and Run. If the test is created successfully, the
monitoring portlet appears.
Important! The most likely and common cause for DevTest to append a test file name with
".invalid" is that a Java class needed for the test (for example, in a Dynamic Java Execution
step) is not available in DevTest. When such a test file is saved or closed, DevTest makes a
copy of the test and renames the copy of the test to ".invalid" extension.
22-Jul-2016
356/2016
Monitor Tests
The Monitoring Tests window lets you see API tests, test cases, and test suites that have been run on
CA Application Test. You can also stop or kill a running test from this window.
When no tests or suites meet the selection criteria, you can click Create a Test or Execute a Test.
Click the filter button to toggle the search options.
Filter by Name
To show only the results from a specific test case or suite, enter a name or partial name of the
test or suite.
Filter by Executed By
To show only those test cases and suites that a specific user submitted, enter a userid or partial
userid.
You can also filter by type, by selecting either Tests or Suites. To filter by result, select Passed, Failed,
Aborted, or Running.
To save your filter with a meaningful name, click Save filter options
Then click OK.
22-Jul-2016
357/2016
358/2016
22-Jul-2016
359/2016
Status
Indicates the status of the test case or test suite: Passed,
Running
Failed
, Aborted
, or
VUser
Shows the number of virtual users for each cycle.
Cycle Number
Displays an index of cycle runs. If there is only one cycle in the test run, Cycle Number is 0.
Duration
Shows, in seconds, the duration of the execution of the test case or test suite.
Coordinator Server
Displays the coordinator server that is used by the cycle.
Simulator Server
Displays the simulator server that is used by the cycle.
Cycle Details
To display cycle details, perform one of the following actions:
For test cases that have more than one cycle, double-click the cycle timestamp
For test cases that have only one cycle, double-click the test case name
Each test step in the test case displays. All data sets, filters (global and nonglobal), assertions (global
and nonglobal), companions, and event actions that are associated with each step also display.
22-Jul-2016
360/2016
or Response
Note: If you do not see events or properties for a step that had events or properties,
inspect the staging document for that test to be sure that it is set to record events,
requests, responses, screenshots, and properties that are set or referenced. You can use
the Run1User1CycleShowAll staging document to ensure all is captured.
To view the staging document that a test uses, click the Staging Doc tab.
To view documentation that is associated with a test, click the Documentation tab.
Tip: In the examples project, the multi-tier-combo-selenium.tst has several steps that can
display screenshots.
361/2016
3. Size the window by using the gray arrow at the bottom right corner of the screen
to drag the corner.
Details of Assertions
You can select to see details for fired assertions or evaluated assertions by selecting the appropriate
check box on the filter bar.
Details for fired assertions display the message that the assertion produced and the result of the
assertion.
22-Jul-2016
362/2016
Details for evaluated assertions display the message that the assertion produced and the result of the
assertion.
Details of Filters
Details for filters display the properties that the filter set.
Details of Companions
Details for companions display what action the companion performed.
22-Jul-2016
363/2016
Companions Panel
Prerequisite
CVS runs in a DevTest Server environment.
There must be a coordinator server and a simulator server running, registered with a DevTest
registry.
For details on setting up the DevTest Server environment, see Installing (see page 84).
You can open the CVS Dashboard from DevTest Portal or DevTest Workstation.
22-Jul-2016
364/2016
Top Panel
All the tests in a specific service that have run are shown with a colored ball:
Green: Completed tests.
Red: Failed tests.
Yellow: Tests that had an error in their staging documents.
The icons show the Test Run Completion, Failure, Error, Staging Error, or Unknown Error. These icons
show the state of the monitor after it has run.
At the right side, the top panel shows a graphical representation of the jobs that are currently
running.
Bottom Panel
The bottom panel displays the status of each monitor that is run in a service.
The bottom panel shows all the monitors that are running or have finished their last run. The
monitors that have finished running completely (are not scheduled to run again) do not display in this
list.
The table shows the following information:
22-Jul-2016
365/2016
Toolbar
The Toolbar tab includes a toolbar with the following buttons:
Re/Deploy Monitor: Deploy or redeploy a monitor to the dashboard. See Deploy a Monitor to CVS
(see page 368).
View Attributes: View monitor-related information.
Delete: Delete a monitor from the dashboard.
Run Immediately: Run the monitor immediately.
Activate: Click to deactivate the monitor. Deactivate means it remains in the list, but does not
run. You can also click this button to reactivate a previously deactivated monitor.
View Results: Click to view the results of the run in the Report Viewer.
When you run the CVS Dashboard directly from DevTest Workstation (by selecting to view the
dashboard from DevTest), you also see the following buttons:
Refreshes the list on the dashboard
Auto refreshes the list on the dashboard after a specific period.
When you run the CVS Dashboard from the DevTest Portal, you see the following buttons on the
upper right side of the window:
22-Jul-2016
366/2016
Graph Tab
The Graph tab displays the tests in the CVS Dashboard in a graphical format. This tab provides a
graphical summary of the tests that have passed and failed.
The Graph tab consists of three graphical displays, which show and track the last 60 minutes of
activity.
If you run the CVS Dashboard from the DevTest Portal, the Select Service field lets you enter specific
monitors to view.
If you run the CVS Dashboard from DevTest Workstation or a web browser, the Filter Monitor lets
you select the specific monitors to view.
Follow these steps:
1. Click Filter Monitors at the top of the window.
A list of available monitors opens.
2. Select the monitor that you want to review.
The details display in the following sections:
Pass/Fail by Monitor: The Pass/Fail by Monitor graph shows stacked histograms of Pass
/Fail results for each monitor. Moving the cursor over the histogram shows the result in
text form In the top Pass/Fail By Monitor panel.
Pass/Fail Ratio: The Pass/Fail Ratio graph displays the percentage of total number of
passing tests (green), and the total number of failing tests (red) as a pie chart.
Average Response Time by Monitor: Average Response Time by Monitor graphs the
average response time for each monitor over the last 60 minutes of activity. Each monitor
is color-coded. Hover over a monitor to show the average response time in a tooltip.
You can select to display the test/suite to be seen in the graphical format in the Pass/Fail By
Monitor.
Events Tab
The Events tab displays various events corresponding to the stages of the monitor run, such as
starting of a test run, ending, and failing.
The following information is displayed:
Time Stamp: The time the event occurred.
Service Name: The name of the service in which the monitor resides.
Monitor Name: The name of the monitor in which the event occurred.
22-Jul-2016
367/2016
22-Jul-2016
368/2016
22-Jul-2016
369/2016
#Andthisistheemailserverwewillattempttorouteemailswith(SMTPserver)
#lisa.alert.email.defHosts=localhost
To uncomment this information in the lisa.properties file, remove the # from the first column of the
file.
Restart DevTest to set the mail server configuration.
When you deploy the test to run in CVS, complete the following field:
Notification email: Enter the email address for the email notification of the test run result.
Every time the test is run, you receive an email.
22-Jul-2016
370/2016
CVS Manager
The CVS Manager command-line utility lets you manage the set of monitors that are deployed to the
Continuous Validation Service. The utility is located in the LISA_HOME\bin directory.
This utility has the following format:
CVSManager[-h][-mregistry-spec][-darchive-file][-rarchive-file][-l][-D][A][-e][x][-X][-sname][-nname][-uusername][-ppassword][--version]
-h, --help
Displays help text.
-m registry-spec, --registry=registry-spec
Defines the registry to which to connect.
-d archive-file, --deploy=archive-file
Deploys the specified model archive to CVS as a monitor. The monitor that is defined in the
archive must refer to a monitor and service name combination that does not exist.
-r archive-file, --redeploy=archive-file
Redeploys the specified model archive to CVS as a monitor. The monitor that is defined in the
archive must refer to a monitor and service name combination that exists.
-l, --list
Lists the currently deployed monitors with information about each.
-D, --pause
Pauses the scheduled execution of the indicated monitor.
-A, --resume
Resumes the scheduled execution of the indicated monitor.
-e, --execute-now
Causes the indicated monitor to be executed immediately, regardless of its schedule. This action
does not affect any scheduled executions of the monitor.
-x, --remove
Removes a monitor from CVS. Use the service name and monitor name arguments to indicate
which monitor to remove.
-X, --remove-all
Removes all monitors from CVS. If a service name is specified, then only monitors defined with
that service name are removed.
22-Jul-2016
371/2016
-s name, --service-name=name
Specifies the service name for the monitors to affect.
-n name, --monitor-name=name
Specifies the monitor name to affect.
-u username, --username=username
Specifies the DevTest security user name. This option is required.
-p password, --password=password
Specifies the DevTest security password. This option is required.
--version
Print the version number and exit.
372/2016
Manage Tests
You manage tests from the Tests window.
Follow these steps:
1. Select Manage, Tests
The Tests window opens.
2. To view information and documentation about a test, click Edit
3. To delete a test, click Delete
4. To run a test, click Options
.
and select Run.
You can run a test with the options to change the configuration file, staging document, or coordinator
server.
Follow these steps:
1. From the Tests window, click Options
The Run Test Case dialog opens.
2. To change the staging document for the test, select a staging document from the drop-down
list.
3. To change the coordinator server for the test, select a coordinator server from the drop-down
list.
4. To change the configuration file for the test, select a file name from the drop-down list in the
Configuration field.
5. To display the keys and values in the configuration file, click Configuration details
.
The blue keys and values are the system properties and cannot be edited or deleted. The keys
and values in black are user-defined properties and can be edited and deleted from the
project.config file.
22-Jul-2016
373/2016
6. To edit the project configuration and alternate configuration properties, double-click the key
or value and edit the field.
7. To add a new property to the project configuration, perform the following steps:
a. Click Options
10. To add temporary properties for one runtime, perform the following steps:
a. Click Additional Properties and click Add.
A table displays with a new row.
b. Double-click the Name and Value field and enter a name.
c. To delete the additional property, click X.
11. Click Run.
To download the MAR (see page 574) file with the test, click Options
22-Jul-2016
374/2016
6. In the DevTest Portal, click the test case, then select Run with options.
7. Click the Additional Properties tab (at the bottom).
The locally defined properties for the config file now display under the drop-down list, after
the delimiter at the bottom of the list.
22-Jul-2016
375/2016
.
and select Run.
You can run a test suite with the options to change the configuration file.
Follow these steps:
1. Click Options
and select Run with Options.
The Run Test Suite dialog opens.
2. To change the configuration file for the test suite, select a file name from the drop-down list
in the Configuration field.
8. To add temporary properties for one runtime, perform the following steps:
a. Click Additional Properties and click Add.
A table displays with a new row.
b. Double-click the Name and Value field and enter a name.
22-Jul-2016
376/2016
8.
DevTest Solutions - 9.5
b. Double-click the Name and Value field and enter a name.
c. To delete the additional property, click X.
9. Click Run.
To download the MAR (see page 574) file for the test suite, click Options
MAR.
More Information:
Video about the All Resources window (https://www.youtube.com/watch?v=utIwLF7Kug&index=5&list=PLUo5-4tntpYJmxYRsnMkYSWPTdQ-vrKd8)
Testing Reports
You can view reports with execution and performance data for test cases or test suites that were run
in DevTest Portal. Reports can be viewed, managed, shared, and exported. These reports are divided
into the following categories:
Testing Execution Reports (see page 383)
Testing Performance Reports (see page 393)
For more information about viewing and manipulating reports see View and Navigate Reports (see
page 377).
377/2016
Click Category
to list the available reports by category when multiple categories are
available (default view).
Click List
View Reports
Click Launch Report
(or the name of a report) in a reporting window to open the selected
report in a new tab. The report data displays in the left pane, and the report filter options display in
the Refine By pane on the right. The filter options that display can vary for each report.
Some reports have a legend that you can use to filter the data. The legend is color-coded to represent
the values or properties in the report. For more information, see Filter Reports below.
In most reports, you can hover your mouse over graphical elements, such as line, bar, or pie charts,
22-Jul-2016
378/2016
Filter Reports
Use the Refine By pane to the right of the report data and the legend at the bottom of the report to
filter the information that displays in the report. Click Apply to apply your selected filters to the
report.
Suite/Test List
Lists the available suites or tests that are based on the time range of the report. You can search
the list for a specific suite or test by entering the whole or partial name in the Search bar. Select
the checkbox of the suite or test name you want to generate a report.
Test Type
Displays the test type that is used to filter the report. Test type options are test or suite.
Executed By
Select from the list of users.
Summary Period
Groups the results by the selected summary period. Selecting Week groups all the results by a
weekly period starting on the first day of the week.
22-Jul-2016
379/2016
380/2016
Legend Filters
Many of the reports contain a color-coded legend at the bottom of the report page.
22-Jul-2016
381/2016
In many reports you can click an item in the legend to hide or show the corresponding data in the
report. This is particularly useful in reports that allow you to drill down into sub-level reports. This
feature lets you filter your report data before drilling down. When data is hidden, the legend item
turns gray.
2. Click
to generate a PDF or click
to generate a CSV file.
The report displays in another browser window.
3. To save, click Save.
4. To print, click Print.
More Information:
Testing Execution Reports (see page 383)
Testing Performance Reports (see page 393)
Virtual Service Metrics Reports (see page 803)
CAI Inventory Reports (see page 1253)
CAI Top N Reports (see page 1254)
User Activity Report (see page 1512)
22-Jul-2016
382/2016
383/2016
Important! Tests that completed with errors are included in the pass count rather than
the fail count. To view any errors associated with tests in a Pass status, click the green Pass
Count bar in the report. The Test Execution Detail (see page 390) report opens and lists all
of the test steps for the passing tests. Errors are shown in the Reason for Failure column.
Failed Count
The number of tests that failed to complete successfully. A Failed status indicates a test that
contains an assertion. When the test was run, the criteria of the assertion were not met, which
caused the test to fail.
Abort Count
The number of tests that aborted. Aborted tests are false failures that aborted due to an
inability to connect to the system under test.
The Test Execution History Summary displays the number of tests that were executed daily, weekly,
or monthly by execution state. The report displays information in a bar graph.
To view the details behind any bar in the graph, click the bar in the report. The Test Execution Detail
(see page 390) report opens and lists additional detail for all of the associated test steps.
Click an item in the legend at the bottom of the report to hide or show the corresponding data. For
example, to click Abort Count to hide that data in the graph. When data is hidden, the legend item
turns gray.
22-Jul-2016
384/2016
Important! Tests that completed with errors are a Passed status, not a Failed status. To
view any errors associated with tests in a Passed status, click the green Passed bar in the
report. The Test Execution Detail (see page 390) report opens and lists all of the test steps
for the test run. Errors are shown in the Reason for Failure column.
Failed
The test failed to complete successfully. A Failed status indicates a test that contains an assertion.
When the test was run, the criteria of the assertion were not met, which caused the test to fail.
22-Jul-2016
385/2016
Aborted
The test aborted. Aborted tests are false failures that aborted due to an inability to connect to
the system under test.
To view the details behind any bar in the graph, click the bar in the report. The Test/Suite Execution
History (see page 388) report opens and lists additional detail for each execution of the selected test
or suite.
Click an item in the legend at the bottom of the report to hide or show the corresponding data. For
example, click Aborted to hide that data in the graph. When data is hidden, the legend item turns
gray.
22-Jul-2016
386/2016
Note: When the duration of an individual test step is reported, the think time is excluded.
Since the reported duration of the test or suite includes the think time, the duration of the
test or suite is typically greater than the sum of the duration of the test steps.
Times Executed
Number of times the test cycled (ran completely from beginning to end) during the selected time
frame. Click to view addition detail in the Test/Suite Execution History (see page 388) report.
Passed
The test or suite completed successfully. Click the value in this column to view addition details for
the passing executions of the test or suite in the Test/Suite Execution History (see page 388)
report.
Important! Tests that completed with errors are a Passed status, not a Failed status. To view any
errors associated with tests in a Passed status, click count in the Passed column.
Failed
The test failed to complete successfully. A Failed status indicates a test that contains an assertion.
When the test was run, the criteria of the assertion were not met, which caused the test to fail.
Click the value in this column to view addition details for the failed executions of the test or suite
in the Test/Suite Execution History (see page 388) report.
Aborted
The test aborted. Aborted tests are false failures that aborted due to an inability to connect to
the system under test. Click the value in this column to view addition details for the aborted
executions of the test or suite in the Test/Suite Execution History report.
Last Run Status
The status of the test or suite the last time it was run.
22-Jul-2016
387/2016
22-Jul-2016
388/2016
Note: When the duration of an individual test step is reported, the think time is excluded.
Since the reported duration of the test or suite includes the think time, the duration of the
test or suite is typically greater than the sum of the duration of the test steps.
Times Executed
Number of times the test cycled (ran completely from beginning to end) during the selected time
frame.
Passed
The test or suite completed successfully.
Important! Tests that completed with errors are a Passed status, not a Failed status. To
view any errors associated with tests in a Passed status, click the test/suite name.
Failed
The test failed to complete successfully. A Failed status indicates a test that contains an assertion.
When the test was run, the criteria of the assertion were not met, which caused the test to fail.
Aborted
The test aborted. Aborted tests are false failures that aborted due to an inability to connect to
the system under test
Status
The status of the test or suite the last time it was run in the specified time period.
22-Jul-2016
389/2016
Note: Step duration indicates the amount of time, in milliseconds, for the step to complete.
This duration does not include any think time assigned to the step.
Important! Test steps that completed with errors still appear in a Pass status. The details of
any error or failure messages display in the Reason for Failure column.
The final page of this report displays a summary of the staging information for this test.
22-Jul-2016
390/2016
You can access the Test Execution Detail report directly from the Reporting menu and then select the
appropriate filters for your report. However, you can also access this report as a sub-level report
from the Test Execution History Summary (see page 384).
22-Jul-2016
391/2016
Note: When the duration of an individual test step is reported, the think time is excluded.
Since the reported duration of the entire test includes the think time, the duration of the
test or suite is typically greater than the sum of the duration of the test steps.
Times Executed
Number of times the test was run during the selected time frame.
Reason for Failure
Error or failure messages associated with the test display in this column.
Status
The status of the test the last time it was run in the specified time period.
22-Jul-2016
392/2016
Note: If the Request and Response sections of this report are empty, you have defined the
staging document for this test to not record this information for your reports. Typically,
you chose not to record this information in order to save space in your report files. For
more information, see Test Suite Editor - Reports Tab (see page 570).
The final page of this report displays a summary of the staging information for this test.
More Information:
View and Navigate Reports (see page 377)
Testing Performance Reports (see page 393)
Virtual Service Metrics Reports (see page 803)
CAI Top N and Metrics Reports (see page 1253)
User Activity Report (see page 1512)
22-Jul-2016
393/2016
22-Jul-2016
394/2016
Screen capture of the last page of the Cycle Performance Summary report
22-Jul-2016
395/2016
Request/Second
The Request/Second report displays the number of requests per second (or other specified interval)
for tests and suites. This report is useful for analyzing load testing that is based on the number of
requests per second.
The Request/Second report shows the number of requests that were active, not just requests that
started or stopped. For example, if a request was running for three seconds, it is counted in all three
seconds on the chart. The number of requests display as a line chart.
22-Jul-2016
396/2016
HTTP Summary
The HTTP Summary report helps you to determine the page weight in a web site by showing you the
number of bytes being streamed. This report displays a cumulative HTTP traffic summary in two line
charts.
The HTTP Summary report is limited to the HTTP/HTML test step type. It does not display data for
REST, Web Service Execution, or any other test step type. To see the Cumulative HTTP Traffic
Summary report, the following property must be set in either local.properties or site.properties:
lisa.commtrans.ctstats=true.
22-Jul-2016
397/2016
22-Jul-2016
398/2016
Performance Summary
The Performance Summary report displays the response time and standard deviation for each step in
a selected test. This report helps you analyze the performance of specific steps in a test. The standard
deviation lets you identify steps with unpredictable or unstable response times.
When determining the minimum, maximum and average response times (as shown in the bar
graphs), use the legend on the left side of the report to determine the number of milliseconds. When
determining the standard deviation (as shown in the line graph), use the legend on the right side of
the report to determine the number of milliseconds.
Click an item in the legend at the bottom of the report to hide or show the corresponding data. For
example, click Min Response Time (ms) to hide that data in the graph. When data is hidden, the
legend item turns gray.
The final page of this report displays a summary of the staging information for this test.
22-Jul-2016
399/2016
Test Metrics
The Test Metrics report displays the event metrics for tests or test suites in a line chart by date. To
obtain meaningful data from this report, you must first define the events you want to capture in a
staging document. As you define events in the staging document, you select a color code for those
events. The legend of events and their associated colors display in the second page of the report.
The second page of the report contains the following fields:
Long Description
The event description that you defined in the Long Name field of the staging document.
Sample Rate
The frequency with which sampling is performed and the values of your defined metrics are
recorded. The sample rate can be set in seconds, minutes, hours, or daily. This value is set at the
bottom of the metrics tab of the staging document.
Counter
When set to True, the event metric value is defined as a cumulative value, that is a running total.
When set to False, the event metric value is a single value at the time of sampling.
Event
The name of the event that you defined in the Short Name field of the staging document.
22-Jul-2016
400/2016
Reg Expression
If you defined an event to search for a regular expression, that expression displays in this column.
For example, you can create an event that only records specific types of errors that contain a
defined regular expression.
For more information about defining events in a staging document, see Staging Document Editor Metrics Tab (see page 554).
22-Jul-2016
401/2016
More Information:
View and Navigate Reports (see page 377)
Testing Execution Reports (see page 383)
Virtual Service Metrics Reports (see page 803)
CAI Top N and Metrics Reports (see page 1253)
User Activity Report (see page 1512)
402/2016
DevTest Workstation
DevTest Workstation is an integrated environment for developing, staging, and monitoring tests.
You can work in a DevTest Workstation version or in a DevTest Server environment.
In DevTest Workstation, the tests are managed and run in the Workstation environment. DevTest
Workstation is a test client that QA/QE, development, and business analysis teams use to test the
following components:
Rich browser and web user interfaces
The building blocks below the user interface
DevTest Workstation is used to build and stage, all in a code-less manner: unit, functional,
integration, regression, and business process testing. DevTest Workstation requires a registry to run.
Tests are managed and run in the DevTest Workstation environment (test authoring IDE), which runs
embedded coordinator and simulator servers.
In DevTest Server, the tests are also managed and run in the Workstation environment. The
workstation then connects to the server to deploy and monitor tests that were developed in DevTest
Workstation.
The server-side engine for DevTest test cases and virtual services (test and virtual service model
authoring IDE) manages, schedules, and orchestrates DevTest test cases continually for unit,
functional, load, and performance tests.
22-Jul-2016
403/2016
1.
Open a command prompt, go to the LISA_HOME\bin directory, and run the DevTest
Workstation executable.
2. Accept the default registry, or specify a different registry. Because DevTest Workstation is a
GUI, there is no way to set a default remote registry on startup. Specify a registry at this
prompt, or to change registries, use the Toggle Registry command.
3. Click OK.
The Login dialog opens.
Main Menu
The main menu in DevTest Workstation includes options for all the major functions available. The
options available are dynamic to the selections at times. Some menus and also drop-down lists and
toolbars are available throughout DevTest Workstation.
22-Jul-2016
404/2016
Project Panel
A project is a collection of related DevTest files. The files can include test cases, suites, virtual service
models, service images, configurations, audit documents, staging documents, data sets, monitors,
and MAR info files.
In DevTest Workstation, only one project can be open at a time.
The LISA_HOME\Projects directory is created when you create a project (see page 414) for the first
time.
All the folders in the Project panel of DevTest Workstation are the same as the folders that are
created in the file system. You can examine the LISA_HOME directory to see the folder structure and
files.
You can import files into a project.
22-Jul-2016
the project
405/2016
Dock or undock
Close
The project includes a .settings directory, which does not appear in the Project panel. The .settings
directory is used for saving some settings internally and can be seen in the file system in the Projects
directory.
406/2016
Examples Project
When you open DevTest Workstation for the first time, the Project panel displays a project with the
name examples.
Open any of the sample files by double-clicking them. The appropriate editor opens in the right
panel.
The actual project files are located in the LISA_HOME\examples directory.
MARInfos
AllTestsSuite
Suite MAR that includes the test suite AllTestsSuite, with all the .tst files and accompanying data
files to run the AllTestsSuite. The suite also includes the 1User1Cycle0Think staging document,
the DefaultAudit audit document, and the project.config configuration file.
creditCheckValidate
Test-based Monitor MAR that includes the creditCheckValidate test case and the monitorRunBase
staging document.
DatabaseModel
Virtual Service MAR that includes the DatabaseModel virtual service model and virtual service
image.
OnlineBankingExternalCreditCheck-local
Test-based Monitor MAR that includes the test case webservices-xml-fail, staging document
Run1User1Cycle, and project.config.
OnlineBankingJMStest-local
Test-based Monitor MAR that includes the async-consumer-jms test case, the Run1User1Cycle
staging document, and the project.config configuration file.
OnlineBankingTransactionMonitor-local
Test Based Monitor MAR that includes the following items:
The multi-tier-combo test case
The Run1User1Cycle staging document
All the data files to support the test case
The project.config configuration file
22-Jul-2016
407/2016
OnlineBankingWebServices-local
Test-based Monitor MAR that includes the webservices-xml test case, Run1User1Cycle staging
document, and the project.config configuration file.
Audit Docs
DefaultAudit
main_all_should_fail
ws_security-xml
Configs
project
The project.config file contains intelligent defaults for many properties.
Data
The Data directory contains data sets, keystores, and WSDLs that are necessary to run some of the
examples for the demo server.
Monitors
creditCheckValidate.tst
Test case that is used for CVS monitor demos. Fails randomly on a specific cid.
monitorRunBase.stg
Staging document with one user, one cycle, and 100 percent think time, with CAI disabled and no
maximum run time.
monitorRunMultiple.stg
Staging document with one user, run continuously, 136 percent think time, with CAI enabled and
a maximum run time of 15 seconds.
monitorSLARun.stg
Staging document with one user, one cycle, and 100 percent think time, with CAI disabled and no
maximum run time. JMX and JBOSS metrics are selected to record.
selenium.capabilities.conf
Sample skeleton parameter file with Selenium web driver parameters that you can set to
customize options for Selenium test cases.
serviceValidator.tst
Used for CVS monitor demos. Fails randomly on a specific cid.
userAddDelete.tst
This test is used in the monitor setup for CVS demos.
Setup
The Setup directory in the Examples directory contains batch files to start all DevTest components,
stop all DevTest components, and load CVS monitors.
To use the scripts with access control (ACL) enabled, add the user name and password options to the
22-Jul-2016
408/2016
Staging Documents
1User0Think_RunContinuously
This staging doc runs a single virtual user with zero think time. This staging document also runs
the test or tests "continuously," which does not necessarily mean "forever".
When a test that this staging doc runs meets ALL of the following conditions and runs out of data,
the run finishes:
A data set is on the first step of the test.
The data set "End of data" step is "End the test."
The data set is "global," not "local."
If there are multiple data sets matching these conditions, then the first data set to expire finishes
the run. For a good example, review the multi-tier-combo.tst test case.
1user1cycle0think
This staging document runs a test with a single user one time with a 0 percent think time scale.
ip-spoofing
To test IP spoofing support with your DevTest installation, use this staging document. IP spoofing
is enabled in this staging document in the IP Spoofing tab. If you are running the examples server,
an IP spoofing test web page is available at http://localhost:8080/ip-spoof-test.
jboss-jmx-metrics-localhost
This staging document runs a test with three users, run continuously, with a maximum run time
of 440 seconds and 100 percent think time. The document has all four report generator
parameter check boxes selected, and specifies all JBOSS JMX metrics to be collected.
Run1User1Cycle
This staging document runs a test with a single user one time with 100 percent think time scale.
Run1User1CyclePF
This staging document runs a test with a single user one time with 100 percent think time scale,
with CAI enabled.
Run1User1CycleShowAll
This staging document runs a test with a single user one time with 100 percent think time scale.
The staging document also selects all four check boxes in the default report generator so more
things show in the web base model execution page.
Subprocesses
ws-sec-sub
This one-step test case is marked as a subprocess and can be called from any Execute Subprocess
step.
Test Suites
22-Jul-2016
409/2016
AllTestsSuite
The AllTestsSuite runs all the tests in the DevTest Tests directory, using the 1user1cycle staging
document and a default audit document of AuditDocs\DefaultAudit.aud. For report metrics, it
only records requests and responses, and produces the default metrics. The Run Mode is serial.
FastAllTestsSuite
The AllTestsSuite runs all the tests in the DevTest Tests directory, using the 1user1cycle0think
staging document and a default audit document of AuditDocs\DefaultAudit.aud. For report
metrics, it only records requests and responses, and produces the default metrics. The Run Mode
is parallel.
Test Cases
AccountControlMDB
A simple JMS test that adds a user with an account to LISA Bank. We expect and assert on
patterns in the responses from the two steps.
async-consumer-jms
An example of an "async consumer" queue where the test case continually accepts messages
from a response queue/topic. The queue also makes the messages available to the test case in
the order in which they arrived.
The first step creates the queue (internal to the test).
The second step fires three messages to a JMS queue on the demo server. The async queue
receives the messages.
The third step validates that the async queue received three messages.
DevTest_config_info
This test case fetches diagnostic information about the computer running DevTest. The results
can help Support solve configuration issues.
ejb3EJBTest
A pure EJB test of the LISA Bank functionality. Usually you would test applications by recording a
web browser or other UI. Those tests are "end to end" integration tests. These sorts of tests are
"lower down the food chain" and require more technical authors (though you still do not need to
write any code).
These tests enable the development team to use to test constantly and validate the code without
having a user interface, which may not exist or may change so frequently that the tests cannot
keep up.
ejb3WSTest
This model thoroughly tests the LISA Bank web services. The model is almost identical in
functionality to the ejb3EJB test and useful for the same reasons (see that test case
documentation).
ip-spoofing
This example test case demonstrates IP spoofing support in DevTest.
This test requests the URL "http://localhost:8080/ip-spoof-test" using a REST step, a web page
that contains the IP address of the requesting client. The test then makes a SOAP request to the
following URL, which identifies a web service containing an operation that returns the IP address
of the requesting client:
http://localhost:8080/itko-examples/ip-spoof-test/webservice
The rest case executes both requests in a loop for ten times. You can stage this test with the IP
22-Jul-2016
410/2016
411/2016
22-Jul-2016
412/2016
scripting
CA Application Test can take advantage of JSR-223 scripting engines, allowing you to use a large
variety of scripting engines in script steps, assertions, data protocols, match scripts and almost
anywhere using {{=%language%}} syntax.
sendJMSrr
This test case lets you test a virtual service that has been created and deployed from JMS request
/response pairs (see page 728).
service-validation
This test is a simple example of service validation. The test calls one web service and one EJB
service and inspects the underlying database with SQL to validate that the services function
appropriately.
web-application
This test is a simple web test that was generated using the web recorder. The test contains some
basic assertions such as "assert nonempty response," which is automatically generated. The test
also contains some "assert title" assertions that were created by parsing the HTML responses for
the <title> tag. These assertions help to ensure that the recorded page is the same when we play
back the test.
webservices
This test case adds, gets, and deletes a user from the EJB3 web services. The test uses a unique
code generator to create a number that has a prefix that is a value {{user}} from the config file.
The password is hard-coded in the config file.
ws_attachments
This test case tests our ability to send and receive inline base64 encoded data blobs and XOP
/MTOM attachments. Filters and assertions on steps verify that the requests and responses look
correct.
ws_security
The ws_security test case shows how to use signed and encrypted SOAP messages. The first two
steps succeed and the last two steps fail. The calls are the same, but the web service does not
accept messages that are unencrypted or unsigned.
ws_security-xml
This test model shows how to use signed and encrypted SOAP messages. The first two steps
should succeed and the last two steps should fail. (The calls are the same but the web service
does not accept messages that are unencrypted or signed.)
This test plan requires that your Java environment supports unlimited strength encryption. If
either of the first two steps fail, a likely suspect is that your JCE jars must be updated to enable
unlimited strength encryption. The JCE jars can be downloaded from www.oracle.com. Search on
the keywords "JCE unlimited strength" and pick the JCE library matching your Java version, such
as JCE 7 for Java 7. After you install the JCE jars, your DevTest services must be restarted.
In the audit document, two occurrences of Step Error are expected. We audit for two Step Errors
because we expect both of the last two steps here to raise Step Errors. Thus, the audit document
can also audit how many occurrences of an event are received. If we add a third Step Error entry
to the audit document, the auditor will fail this test because only two Step Error events are
raised.
413/2016
VServices
statefullATM.tst
statelessATM.tst
web-app-proxy.tst
DatabaseModel.vsm
kioskV4model.vsm
kioskV5.vsm
kioskV6.vsm
WebServicesModel.vsm
webservices-vs.vsm
Images
DatabaseModel.vsi
kioskV4ServiceImage.vsi
kioskV6.vsi
si-kioskV5-dynamic.vsi
si-kioskV5.vsi
WebServicesModel.vsm
Create a Project
You can manually create a project or you can create a project from an existing Model Archive (MAR)
file.
Note: You can only create a project from a VSE MAR file. You cannot add a MAR to an
existing project with this dialog.
414/2016
Open a Project
You can open a project from DevTest Workstation or the command line.
To open a project from DevTest Workstation:
1. Select File, Open, Project from the main menu.
If you have already opened some projects, you see a list of recently opened projects that you
can select from. After it is selected, the project will open.
2. To browse for a project file, select File System from the list of choices and the Open Project
window opens.
3. Select the project and click Open.
To open a project from the command line:
1. Navigate to the LISA_HOME\bin directory.
2. Run the DevTest Workstation executable and specify the project directory as an argument.
The project directory can be an absolute path or a relative path. The following example uses
an absolute path:
LISAWorkstation"C:\ProgramFiles\CA\Lisa\Projects\Project1"
415/2016
Note: The Quick Start window is always available as a tab after more tabs are opened.
The Quick Start window has some of the most useful options in DevTest Workstation. When you click
an option, its parameters are listed on the right side of the window.
The following choices are available on this window. Depending on your screen resolution, you could
see the compact or the expanded wording for each menu choice. To view all menu options, click the
down arrow at the bottom of the window.
Open Recent or Open a Recent Document
New WS Test or Create a Web Services Test
New Web Test or Create a Web Test
Create VSM or Create a VS Model
Record WS VSI or Record a WS VS Image
VSI from WSDL or Create an SI from a WSDL
Learn More or Learn More About DevTest
Open Recent
When DevTest Workstation opens, by default this option is selected. The right pane displays recently
opened projects, test cases and suites, staging documents, VS models or VS images (if applicable).
22-Jul-2016
416/2016
New WS Test
The New WS Test option in the Quick Start window lets you create a Web Service test case. The
parameters that are needed are displayed in the right pane.
For more information, see Generate a Web Service (see page 642).
22-Jul-2016
417/2016
Create VSM
The Create VSM option in the Quick Start window lets you create a Virtual Service Model and a
corresponding Virtual Service Image.
22-Jul-2016
418/2016
For more detailed information about the windows and options for VSM and VSI creation, see Create a
Service Image (see page 814).
Record WS VSI
The Record WS VSI option in the Quick Start window lets you create a web services Virtual Service
Image. The parameters that are needed are displayed in the right pane.
419/2016
Learn More
The Learn More option in the Quick Start window displays a link to the documentation, online
support, and the DevTest global community.
All available user documentation for DevTest is accessible from this menu.
22-Jul-2016
420/2016
To generate a heap dump file (HProf), right-click the Memory Meter. Select the Dump Heap
option.
Note: This functionality is a diagnostic tool that can help CA Support determine the causes
of OutOfMemory conditions. The heap is automatically dumped if an OutOfMemory
condition occurs; this option is for manually triggering a heap dump.
After the dump is created, a message indicates that the heap dump has been taken.
Tray Panels
DevTest Workstation has tray panels for some features, such as the Output Log Message (see page
1858) step.
You can control whether the opening and closing of tray panels uses animation. By default, animation
is disabled to help improve the performance for users who access DevTest Workstation through a
remote desktop.
To enable the animation, add the following line to the site.properties or local.properties file:
lisa.ui.tray.animation=true
More Information:
Anatomy of a Test Case (see page 422)
Properties (see page 432)
Configurations (see page 444)
Assets (see page 449)
22-Jul-2016
421/2016
More Information:
Test Case Quick Start (see page 422)
Multi-tier-combo Test Case (see page 426)
Elements of a Test Case (see page 427)
Elements of a Test Step (see page 429)
22-Jul-2016
1.
422/2016
Project Panel
The Project panel, which is located in the left portion of the window, is dockable. You can open or
When DevTest Workstation first opens, the last project you had open opens by default.
22-Jul-2016
423/2016
Project panel
Model Editor
The model editor is where you create and view the test case workflow. The test case workflow
consists of all test steps, filters, and assertions that are applied to a specific test case.
The model editor is the place to create and view test cases. The middle portion of the window
displays a tab that is the name of the test case.
22-Jul-2016
424/2016
The workflow in the model editor provides a graphical view of a test case. This view is helpful,
because it gives a quick visual validation on the test case workflow.
In the model editor, an icon in the workflow represents each step in the test case. The icons change
according to the type of test step. For example, if you have a database-related step, a database icon
and the associated filters and assertions are attached to the step.
Element Panel
The Element panel contains the elements that are required for a test case or a test step.
22-Jul-2016
425/2016
To change the step name back to the default step name, click Revert to Default Name
You can add or delete an element by clicking the required test case or test step element.
Some elements can be applied at the global level (to an entire test case). Some elements can be
applied at a step level (only to a specific test step).
Enter some required information at the beginning of a test case.
For example:
Test Case Information: Enter the test case name and select whether this case is a subprocess.
Documentation: Enter the documentation for the test case.
After you add steps to this test case, a workflow of steps begins to form. A new set of elements
appears at a test step level in the Element panel.
22-Jul-2016
426/2016
Running this test in the Interactive Test Run (ITR) (see page 584) window, the test creates a single
user from the first row of the spreadsheet and finishes.
If you stage the test (see page 600) with the example 1User0Think_RunContinuously staging
document, the test restarts until it reaches the end of the data set. This method is the preferred way
to iterate repeatedly over a large data set. You can introduce a loop in the test case, but that is not as
flexible.
If you let the staging document control the data set ending the test, then you can spread the test
over many virtual users. Or, you can control the pacing of the test with think times, for example.
Only global data sets that are set on the first step in the test affect the staging document "end the
continuous test run" behavior. If the data set is local to the test or it is declared elsewhere in the test,
the "run continuously" behavior really does mean "run forever."
Notice the example project folders being opened in the Project panel and a set of test case elements
in the Element panel.
Here you can see in the model editor section the test case information.
22-Jul-2016
427/2016
For more information about subprocesses, see Building Subprocesses (see page 539).
Companions
A companion is an element that runs before and after every test case execution. Companions are
used to configure global behavior in the test case. A restart causes the companions to run again.
To open the companion editor, double-click the companion in the Elements panel.
Global Assertions
An assertion is an element that runs after a step and all its filters have run. Assertions verify that the
results from running the step match your expectations. A global assertion applies to the entire test
case.
To open the assertion editor, double-click the assertion in the Global Assertion list.
22-Jul-2016
428/2016
Global Filters
A filter is an element that runs before and after a test step. Filters give you the opportunity to change
the data in the result, or store values in properties. A global filter applies to the entire test case.
To open the filter editor, double-click the filter in the Global Filter list.
Documentation
The Documentation area lets you add the documentation for your test case. This text is not used in
any process, but it is a convenient place: and more importantly, a good practice to put a description
of your test case, and notes for other users who use this test case.
22-Jul-2016
429/2016
Step Information
The step information section provides a place to document basic information about the test step.
You can enter the step name, think time, Execute on details, and Next step details. You can also
specify to run the step using global filters and to run the step quietly.
For more information, see Building Test Steps (see page 523).
Log Message
A log message is a text field in which you can enter a message for a step. This message is seen upon
execution of the test step or case.
22-Jul-2016
430/2016
Assertions
An assertion is an element that runs after a step and all its filters have run. Assertions verify that the
results from running the step match your expectations. The result of an assertion is always Boolean either true or false.
The outcome determines whether the test step passes or fails, and the next step to run in the test
case. That is, the assertion can dynamically change the test case workflow by introducing conditional
logic (branching) into the workflow.
Filters
A filter is an element that runs before and after a test step. Filters give you the opportunity to change
the data in the result, or store values in properties.
Data Sets
A data set is a collection of values that can be used to set properties in a test case while a test is
running. This ability provides a mechanism to introduce external test data to a test case.
Properties Referenced
This section contains a list of properties that the test step uses or references.
To open the extended view and get its variable value, select and right-click the property.
22-Jul-2016
431/2016
Properties Set
This section contains a list of properties that the test step sets. The Properties Referenced and
Properties Set are for a specific step and change when another step is selected.
Documentation
The Documentation area lets you add the documentation for your test step. This text is not used in
any process, but it is a convenient place: and more importantly, a good practice to put a description
of your test step, and notes for other users who use this test step.
Properties
Test properties are name - value pairs, also known as key - value pairs.
The key to data independence, reusability, and portability in test cases is the ability to replace specific
data values abstracted from them with variables. These variables are referred to as properties. Some
properties are predefined and guide how the application operates. You create other properties while
you are building your tests.
A sound understanding of properties is important to the creation of test cases. In the context of a test
case, any time there is something that can change, it is appropriate to use a property. This scenario
includes values in test steps and values in configurations, for example.
22-Jul-2016
432/2016
Properties can be defined in several ways. After they are defined, they are available to any
subsequent steps, assertions, and filters in the test case (they are global to the test case). Properties
can, with few exceptions, be overridden in a test case.
Whenever a property value is set, a Property set event (see page 1658) is recorded. The event contains
the property name and value.
Property values are not limited to string values. A property can hold strings, numbers, XML
fragments, serialized Java objects, or the complete response from a test step. Many properties that
are created during a test run that are available to the subsequent test steps. For example, the lisa.
stepname.rsp property contains the response for the stepname step.
More Information:
Specify a Property (see page 433)
Property Expressions (see page 434)
String Patterns (see page 434)
Property Sources (see page 440)
Common Properties and Environment Variables (see page 441)
Property Files (see page 443)
Use the Properties Pane (see page 443)
Specify a Property
Specify a property using the syntax: {{property_name}}.
When a property is identified and ready for use, the current value of the property replaces
{{property_name}}. Sometimes a property is expected, and is the only choice. Other times, you are
asked for the property name explicitly. In these cases, you enter the property name without the
braces. Use the brace notation when properties are embedded in a text string. Other syntax allows
property expressions to be used: {{=expression}} or {{property_name=expression}}.
A property name can contain spaces. However, using spaces is not recommended. The characters
that define the property syntax ( {,}, and = ) cannot be used. If you reference a nonexistent or invalid
property, DevTest leaves it in the braces.
When editing properties files, which contain UNIX-style line feeds, use an appropriate editor like
WordPad.
Note: All property names that start with lisa. are reserved for internal use. DevTest may
hide or delete properties that start with lisa.
22-Jul-2016
433/2016
Property Expressions
Properties can store many different types of data. They can also evaluate and store expressions.
These expressions can contain any valid Java or JavaScript expressions that BeanShell can evaluate.
BeanShell. BeanShell is a Java interpreter environment. Further, these expressions could be string
patterns, which give real-looking fake strings, appropriate for most purposes.
For more information about BeanShell, see Using BeanShell in DevTest (see page 669) or www.
beanshell.org (http://www.beanshell.org/).
To use a property expression, use one of the following formats:
{{=expression}}
BeanShell is used to evaluate the expression and replace {{expression}} with the result of the
evaluation. For example, {{=Math.random()}} evaluates the static Java method and replaces the
{{}} construct with the random number that was returned.
{{key=expression}}
Using {{rand=Math.random()}} sets a property rand equal to the random number that was
returned, and replaces the {{}} construct with the random number.
You can reference properties by name only in a property expression (that is, without the braces)
because they are already defined as properties. If the property is not found, the property expression
is returned inside braces to indicate that there is a problem in the expression.
String Patterns
String patterns are special types of property expressions that have a syntax {{ =[:patternname:] }}. For
example, to format a first name, the string pattern property could be {{ =[:First Name:] }}. The
property would evaluate to a fake first name that looks like a real name.
This behavior is much better than the possibility of dealing with random strings that do not look like a
real name. The string pattern functionality supports many patterns in addition to first names: last
names, dates, Social Security numbers, credit card numbers, credit card expiration dates, and many
more. This fake data comes in the TESTDATA table in the reportdb database.
The recommendation is that if you need a first name in your test case, you use {{ =[:First Name:] }} in
a data set. The "{{=[ " part is a signal to use the string pattern and it has a list of things "registered"
that it recognizes.
For example, using the following information in a log step:
{{=[:FirstName:]}}{{=[:MiddleInitial:]}}{{=[:LastName:]}}
{{=[:StreetAddress:]}}
{{=[:City:]}},{{=[:StateCode:]}}
{{=[:ZIPCode:]}}{{=[:Country:]}}
SSN:{{=[:SSN:]}}
Card:{{=[:CreditCard:]}}Expires{{=[:CCExpiry:]}}
Phone:{{=[:Telephone:]}}
Email:{{=[:Email:]}}
22-Jul-2016
434/2016
MarilynMMcguire
3071BaileyDrive
Oelwein,IA
50662US
SSN:483-16-8190
Card:4716-2361-6304-6128Expires3/2014
Phone:319-283-0064
Email:Marilyn.C.Mcguire@spambob.com
If you run the step again, you get a different set of data. DevTest tracks the number of rows in the
test data database and randomly selects a row between 1 and N.
To open the following window, which shows all existing string patterns and the documentation, click
the vertical Patterns tab on the far right side of the page.
22-Jul-2016
435/2016
22-Jul-2016
436/2016
Implementation Information
The data is stored by default in the reports database in the TESTDATA table.
DevTest Workstation verifies whether there is any data in the TESTDATA table when it starts. If there
is no data, then com/itko/lisa/test/data/TestData.csv inside lisa-core.jar is read to load up the
database. If reports.db gets deleted for some reason, the test data is recreated. Reading the database
is done only at startup and takes approximately 15 seconds.
Example
A good way to get some practice with property expressions is to build a simple test case that has a
single step: an Output Log Message. This step only writes to a log and displays the response in the
Interactive Test Run (ITR) Response panel. Therefore, you can experiment with using property
expressions.
The following example uses the multi-tier-combo test case in the examples directory (multi-tiercombo.tst):
22-Jul-2016
437/2016
These graphics show the Properties tab in the ITR. The tab that is shown is for the step Get User.
22-Jul-2016
438/2016
22-Jul-2016
439/2016
Look for the event Property set in the Test Events tab.
Java developers can also take advantage of the BeanShell environment in the JavaScript step to test
property expressions.
Property Sources
Properties can originate from several sources that include:
DevTest
Environmental variables
Command-line variables on startup
Configurations
Companions
Test steps
Filters
Data sets
String patterns
22-Jul-2016
440/2016
22-Jul-2016
441/2016
LISA_POST_CLASSPATH
Used to add information after the DevTest classpath. DevTest does not use the OS environment
CLASSPATH variable. To add your own JARs after the DevTest classpath, use
LISA_POST_CLASSPATH.
LISA_PRE_CLASSPATH
Used to add information before the DevTest classpath. DevTest does not use the OS environment
CLASSPATH variable. To add your own JARs before the DevTest classpath, use
LISA_PRE_CLASSPATH.
LISA_PROJ_NAME
The name of the project to which the current document belongs. LISA_PROJ_NAME refers to the
main calling test project.
LISA_RELATIVE_PROJ_NAME
The name of the project to which the current document belongs. LISA_RELATIVE_PROJ_NAME
refers to the project for the currently executing test or subprocess. If the test does not call any
subprocesses, LISA_PROJ_NAME and LISA_RELATIVE_PROJ_NAME are the same.
LISA_PROJ_PATH
The fully qualified path of the project directory. The value is operating system-dependent. A
backslash (\) is used as the separator character on Windows. A forward slash (/) is used as the
separator character on other operating systems. The following example is based on a Windows
installation:
C:\ProgramFiles\LISA\examples
The one limitation to using LISA_PROJ_PATH in a Custom Java step is that the syntax
{{LISA_PROJ_PATH}} is not supported. The Custom Java step invokes a Java compiler to compile
the script and Java treats backslashes as escape characters in strings. Therefore, this specific
string raises a compiler error. The workaround is to use LISA_PROJ_PATH as a variable. For
example:
Filef=newFile(LISA_PROJ_PATH);
LISA_RELATIVE_PROJ_PATH
The fully qualified path of the project directory of the currently executing test or subprocess.
LISA_PROJ_PATH refers to the main calling test. See LISA_PROJ_PATH for details. If the test does
not call any subprocesses, LISA_PROJ_PATH and LISA_RELATIVE_PROJ_PATH are the same.
LISA_PROJ_ROOT
The fully qualified path of the project directory. The value is operating system-independent. A
forward slash (/) is used as the separator character on all operating systems, including Windows.
The following example is based on a Windows installation:
C:/ProgramFiles/LISA/examples
LISA_RELATIVE_PROJ_ROOT
The fully qualified path of the project directory of the currently executing test or subprocess.
LISA_PROJ_ROOT refers to the main calling test. See LISA_PROJ_ROOT for details. If the test does
not call any subprocesses, LISA_PROJ_ROOT and LISA_RELATIVE_PROJ_ROOT are the same.
LISA_PROJ_URL
The URL of the project directory. For example:
22-Jul-2016
442/2016
LISA_RELATIVE_PROJ_URL
The URL of the project directory of the currently executing test or subprocess. LISA_PROJ_URL
refers to the main calling test. See LISA_PROJ_URL for details. If the test does not call any
subprocesses, LISA_PROJ_URL and LISA_RELATIVE_PROJ_URL are the same.
LISA_TC_PATH
The fully qualified path of the directory where the test case is located.
LISA_TC_URL
The URL of the directory where the test case is located.
LISA_USER
The user that loaded the test case.
Property Files
The main property files are:
lisa.properties
local.properties
site.properties
More Information:
DevTest Property File (lisa.properties) (see page 1716)
Custom Property Files (see page 1749)
Click
443/2016
Configurations
A configuration is a named collection of properties that usually specify environment-specific values
for the system under test.
By removing hard-coded environment data from the test case, you can run the same test on different
environments by simply using a different configuration. Configurations are used everywhere in
DevTest: for example, in a test case document, test suite document, staging document, test case
execution, or test suite execution.
A configuration must be defined at the project level. You can specify the values of these properties at
the beginning of a test case.
The default configuration of any project is project.config. You can create more configurations in a
project and can make one active for a specific test case or suite.
If you create a configuration, you are not able to add any new keys in it. To add keys in the new
config, add them in the project.config file. You can then select the newly defined keys added in the
project.config file from the drop-down available in the new config file.
Properties are added to your configuration automatically while you develop your test.
For example, when you enter the WSDL name in a test, the defined server name and port are
replaced with properties such as WSSERVER and WSPORT. The values of these properties are
automatically added to your default project configuration. Now you can change the location of the
web service merely by editing the configuration, rather than looking for hard-coded values in several
test steps.
22-Jul-2016
444/2016
As another example, when you work with Enterprise JavaBeans (EJBs) or Java objects, you can switch
hot deploy directories, or add extra JAR files to your class path, to use different versions of your Java
code. Two standard properties exist for these locations: HOT_DEPLOY and MORE_JARS. You can set
these properties in your configuration.
For information about other properties, see Properties (see page 432).
Configurations are for storing properties that are related to the system under test. Avoid using them
for storage of "test-like" parameters and global parameters. These parameters can be stored in a
companion (see page 492).
Note: Backslashes "\" are not preserved in configuration files. If you edit the config file
manually and you add something with a backslash, the file is overwritten without the
backslashes.
A configuration file is a text file with a .config extension that contains the properties as key/value
pairs. Configuration files are integral to any test run.
Configuration files can be created or edited in any text editor and can be saved with a .config
extension.
When starting a test run, you can select a configuration file. For more information, see Apply a
Configuration While Running a Test Case (see page 449).
We recommend that you establish a naming convention for configuration files, making it easier to
identify alternate configurations.
These configuration files must be imported into DevTest.
More Information:
Project Configuration (see page 445)
Add a Configuration (see page 446)
Mark a Configuration as Active (see page 447)
Edit a Configuration (see page 447)
Apply a Configuration While Running a Test Case (see page 449)
Project Configuration
Every project has a configuration file with the name project.config. This file is also known as the
project configuration.
22-Jul-2016
445/2016
These parameters are standard parameters that are available in all configurations.
The project configuration contains the superset of the keys that are defined in every other
configuration. To add parameters in other configurations, the parameters must be included in the
project configuration. You can then select from the drop-down list in the other configurations.
By default, the project configuration is the active configuration of a project. You can change (see page
447) which configuration in a project is active.
Add a Configuration
A project can have many alternate configurations, but it can have only one active configuration. Any
alternate configuration or the default configuration can be made active. The alternate configurations
can only override default properties.
22-Jul-2016
446/2016
To add keys in the new configuration, add them in the project configuration. You can select the newly
defined keys from the drop-down in the new configuration file. In a new configuration file, you are
not able to add any new keys.
When you create a configuration file, you can only add keys that are already defined in the project
configuration. Some standard keys are provided with the installation.
Follow these steps:
1. Right-click the Configs folder in the Project panel and select Create New Config.
2. Enter the name of the new configuration.
3. Click OK.
More Information:
Properties for Mobile Test Playback (see page 654)
Each test case in a single project shares the active configuration that is applied to the project. You
cannot assign a separate configuration for each test case in a project.
If an active configuration is selected, Stage a Quick Test uses it. If not, it uses the default
configuration (project.config).
To mark a configuration as active:
1. Right-click the configuration in the Configs folder and select Make Active.
Edit a Configuration
In any configuration other than the project configuration, you can add properties only if they exist in
the project configuration.
22-Jul-2016
447/2016
A best practice is to use properties in the path names that are stored in the configuration. Properties
such as LISA_HOME or LISA_PROJ_ROOT allow for portability of test cases.
A property value can contain multiple lines.
The extended view consists of a dialog for editing a property value. This view can be useful when the
value is long or when the value contains multiple lines. To access the extended view, right-click the
property value cell and select Launch Extended View.
Follow these steps:
1. Double-click the configuration in the Configs folder.
The Properties Editor appears.
2. Add a property by clicking
Add at the bottom of the Properties Editor.
A new line is added to the property list.
3. Click the drop-down to select the chosen key.
Common property names appear in the drop-down.
Values:
HOT_DEPLOY
Indicates the location of the hot deploy directory.
MORE_JARS
Add more JAR files to your class path.
NOTIFY_ON_FAIL
Defines an email address to be notified when a test case fails.
RESOURCE_GROUP
Filters out the selection of coordinators and VSEs based on the resources that are defined
in a resource group (see page 1520).
22-Jul-2016
448/2016
Assets
An asset is a set of configuration properties that are grouped into a logical unit.
22-Jul-2016
449/2016
More Information:
Asset Browser (see page 450)
Asset Editor (see page 451)
Asset Inheritance (see page 453)
Runtime Scope (see page 453)
Create Assets (see page 454)
Create Assets from Test Steps (see page 454)
Modify Assets (see page 455)
Verify Assets (see page 455)
Asset Browser
When you open a configuration, the asset browser is located to the right of the properties editor.
Note: If the asset browser is empty, then no assets have been created.
The main area contains a tree structure. The top-level nodes are the asset categories. The second22-Jul-2016
450/2016
If an asset is associated with a project configuration, you can create a copy of the asset by rightclicking the asset and choosing Duplicate.
If an asset is also associated with another configuration, right-click the asset and select Duplicate in
project config to create a copy of the asset.
Asset Editor
You use the asset editor to perform the following tasks:
Create assets from scratch
Modify assets
The asset editor has two modes: basic and advanced.
22-Jul-2016
451/2016
The following graphic shows the basic mode. The name and description parameters are standard for
all assets. The parameters below the first horizontal separator vary depending on the asset type.
The following graphic shows the advanced mode. You can display the advanced mode by clicking PRO
in the upper right corner.
An asset can have a parameter whose value is another type of asset. For example, the JMS session
asset has a parameter in which you specify a JMS connection asset. The JMS connection asset has a
parameter in which you specify a JMS connection factory asset.
Some parameters let you change the editor so that you can enter a property as the value.
Some parameters that provide a discrete set of values let you change the editor so that you can enter
the value directly.
You can use the green button in the title bar to verify (see page 455) the asset.
22-Jul-2016
452/2016
Asset Inheritance
Every project has a project configuration. A project can also have one or more other configurations.
The project configuration contains the superset of all the assets in the other configurations.
You can configure an asset in another configuration to override the corresponding asset in the
project configuration.
The following graphic shows an example. The project configuration has an asset with the name
myAsset. This asset includes the following parameters: name, description, and mode. The second
configuration has the same asset. However, the value of the mode parameter in the second
configuration is different from the value of the mode parameter in the project configuration. Thus,
the asset in the second configuration is overriding the asset in the project configuration.
The asset can even be a different class, as long as the type is the same.
For example, assume that the project configuration has an IBM MQ connection factory asset. In the
additional configuration, you can change the asset to be a TIBCO connection factory asset. This
change is possible because the IBM MQ connection factory asset and the TIBCO connection factory
asset have the same type: JMS Connection Factory.
The asset browser (see page 450) uses color coding to show the inheritance setting for the assets in
each additional configuration:
If an asset is gray, then it does not override an asset in the project configuration.
If an asset is black, then it overrides an asset in the project configuration.
Runtime Scope
The runtime scope specifies the minimum level at which an open asset instance is cached and reused
at runtime.
Each asset has a runtime scope. In addition, an operation in a test step can have a runtime scope.
The valid values are:
Step: An open asset instance is cached and reused during the step in which it is accessed. When
the step is finished, the asset instance is closed.
Model: An open asset instance is cached and reused during the model execution in which it is
22-Jul-2016
453/2016
Create Assets
You can create assets in the asset browser (see page 450) or the asset editor (see page 451).
Follow these steps:
1. Complete one of the following actions:
In the asset browser, click Add in the lower left corner and select the asset type.
In the asset editor, click Add New Asset and select the asset type. The asset types that are
available depend on the parameter where the icon appears.
2. Complete the necessary information. If you leave the Name field blank, a name is
automatically generated.
3. Click OK.
454/2016
Modify Assets
This page describes how to modify an asset.
The changes that you can make include the asset class. For example, you can change a JMS session
asset to a JMS queue session asset or a JMS topic session asset. The icon for changing the asset class
is located in the title bar of the asset editor.
Follow these steps:
1. Do one of the following actions:
a. In the asset browser, double-click an asset.
b. In the asset browser, right-click an asset and select Edit or Override.
c. In a step editor, click Edit Selected Asset.
d. In the editor of another asset that includes the asset as a parameter, click Edit
Selected Asset.
e. Complete the modifications.
2. Click OK.
Verify Assets
You can verify an asset from the asset editor (see page 451) during the following procedures:
Creating assets
Modifying assets
The verification process tries to access the object that the asset represents. The verification process
does not perform the functional operation.
Follow these steps:
1. Ensure that the application, or at least the endpoints that it uses, are running and available to
DevTest.
2. In the asset editor, click the green Verify button.
3. View the log window for a success or failure message.
22-Jul-2016
455/2016
Filters
A filter is an element that runs before and after a test step, enabling you to change the data in the
result, or to store values in properties. Use filters to extract values from web pages, XML and DOM
responses, Java objects, text documents, or other test step responses.
Most filters execute after the step runs.
After the data has been filtered, the data can be used in an assertion, or in any subsequent test step.
Filters usually operate on the response of the system under test. For example, filters are used to
parse values from an HTML page, or to perform conversions on the response. Filters can also be
useful in other places. Filters can be used to save a property value to a file, or convert a property to
be the "last response". Filters are used mainly to set properties.
A filter can be applied as a global filter or as a step filter. The available filter types are the same, but
how the filters are applied differs.
Global filter
A global filter is defined at the test case level and executes before or after test steps that are not
set to ignore global filters. You can set a step to ignore global filters in the Step Information
element of the step.
Step filter
A filter that is defined at the test step level is a step filter, and executes before or after each
execution of that test step.
You can add as many global and step filters as necessary. The filters are executed in the order that
they appear in the test case.
More Information:
Add a Filter (see page 456)
Drag and Drop a Filter (see page 469)
Add a Filter
You can add a filter in the following ways:
Add a Filter Manually (see page 456)
Add a Filter from an HTTP Response (see page 458)
Add a Filter from a JDBC Result Set (see page 461)
Add a Filter from a Returned Java Object (see page 466)
22-Jul-2016
456/2016
3. You are prompted to select a filter type of Integration Support for CAI or Integration Support
for webMethods Integration Server.
For more information about adding each of these types of filters, see Integration Support for
CAI (see page 1703) or Integration Support for webMethods Integration Server (see page 1703).
4. When you have at least one global filter on a test case, for each step, by default, the Use
Global Filters check box is selected. If you do not want to apply a global filter for a step, clear
the box.
22-Jul-2016
457/2016
22-Jul-2016
458/2016
3.
4. To apply an inline filter, double-click the login step in the model editor to open the HTTP
/HTML Step Editor.
22-Jul-2016
459/2016
5. Move to the DOM Tree tab, find MyMoney Home in the DOM Tree view, and select it.
6. At the bottom of the window, in the Select a Command box, select Parse Value Filter from
the drop-down list.
7. In the dialog that is displayed, enter the name for the Property Key "wasAdded":
8. Click OK.
22-Jul-2016
460/2016
8.
You can also add an assertion here. For example, you would probably want to test the value of the
property wasAdded, to see if it is in fact equal to Added user. More information is available in Adding
Assertions.
The generated filter appears as a filter in the login test step.
The same filtering capabilities are available when an HTML response is displayed in the step editor.
2. To get values in the result set, edit the SQL statement to read select * from users and click
Test/Execute SQL.
22-Jul-2016
461/2016
2.
DevTest Solutions - 9.5
3. To get values in the result set, click the Result Set tab and click Test/Execute SQL.
22-Jul-2016
462/2016
4. Click the cell in the result set tab that represents the location of the information to capture
(sbellum).
22-Jul-2016
463/2016
Add Filter from a JDBC Result Set - Verify User Added - Enter property key for value
7. Click OK.
DevTest adds a filter with the name Parse Result Set for Value in the list user step.
8. To see the filter, click the filter editor.
In the example, the value in the cell in the first column, and eighth row, sbellum, is stored in
the property theLogin.
Applying a Second Filter
A second filter can be applied here. You can look for a value in one column of the result set, and then
capture a value from another column in the same row.
Follow these steps:
22-Jul-2016
464/2016
Add a Filter from a JDBC Result Set - Result set with two cells selected
2. Select Filter for a value and then get another column value filter using the
icon. To
create this filter, select two cells in the same row. One is the search column and the other is
the column whose value you want to extract.
3. In the dialog that opens, select or reassign the columns for the search and the value.
4. Enter the property key theEmail.
22-Jul-2016
465/2016
4.
5. Click OK.
DevTest adds a filter with the name Get Value For Another Value in a ResultSet Row in the
Verify User Added step.
The Get Value For Another Value in a ResultSet Row filter looks for sbellum in the LOGIN
column. If the filter finds sbellum, it stores the value in the EMAIL column in the same row in
a property with the name theEmail.
Note: The same filtering capabilities are available when a JDBC result set is displayed in the
Step Editor.
22-Jul-2016
1.
466/2016
1. To open the step editor for the Get User step, double-click the step.
22-Jul-2016
467/2016
3.
22-Jul-2016
468/2016
You could also call a method on the returned object to get the login value for this user, and save the
login in another property.
Inline filters (and assertions) do not result in a filter being added to the test step in the element tree.
Inline filter management is always done in the Complex Object Editor.
For more details on the Complex Object Editor, see Complex Object Editor (see page 494).
22-Jul-2016
469/2016
Assertions
An assertion is a DevTest code element that runs after a step and all its filters have run. An assertion
verifies that the results from the step match expectations.
The result of an assertion is a Boolean value (true or false).
The outcome can determine whether the test step passes or fails, and also determines the next step
to run in the test case. An assertion is used to change the test case workflow dynamically by
introducing conditional logic (branching) into the workflow. An assertion operates very much like an
"if" conditional block in programming.
For example, you can create an assertion for a JDBC step that ensures that only one row in the result
set contains a specific name. If the results of the JDBC step contain multiple rows, the assertion
changes the next step to execute. In this way, an assertion provides conditional functionality.
The test case flow is often modeled with one of the following two possibilities:
The next step that is defined for each step is the next logical step in the test case. In this case, the
assertions are pointing to a failure.
The next step is set to fail, and the assertions all point to the next logical step.
The choice depends, usually, on the actual logic being employed.
You can add as many assertions as are necessary, which gives you the capability to build a workflow
of any complexity. Assertions are the only objects that can change the DevTest workflow.
Note: Assertions are executed in the order that they appear, and the workflow logic usually
depends on the order that the assertions are applied.
After an assertion fires, the next step can be configured as the assertion determines, and the
remaining assertions are ignored. Each time an assertion is evaluated and fired, an event is
generated.
Global and Step Assertions
22-Jul-2016
470/2016
More Information:
Add an Assertion (see page 471)
Assertions Toolbar (see page 483)
Reorder an Assertion (see page 483)
Rename an Assertion (see page 483)
Drag and Drop an Assertion (see page 483)
Configure the Next Step of an Assertion (see page 484)
Add an Assertion
You can add an assertion in the following ways:
Add an Assertion Manually (see page 471)
Add an Assertion from an HTTP Response (see page 474)
Add an Assertion from a JDBC Result Set (see page 478)
Add an Assertion for Returned Java Object (see page 480)
Add an Assertion to a Mobile Test Step (see page 481)
HTTP
Simple Web Assertion
Check Links on Web Responses
22-Jul-2016
471/2016
1.
22-Jul-2016
472/2016
22-Jul-2016
473/2016
22-Jul-2016
474/2016
5. From the Select a Command pull-down menu at the bottom of the panel, select Make Assert
on Selection.
6. In the displayed window, enter the expression that you expect the selected text to match,
then select the appropriate assertion behavior.
22-Jul-2016
475/2016
22-Jul-2016
476/2016
The HTML/XML Filter Info window shows that the Property Key value is the filter to apply and
Expression is the assertion to fire.
As a result, one filter and one assertion are added to the login step and appear n in the model editor.
22-Jul-2016
477/2016
22-Jul-2016
3.
478/2016
3. Select the Result Set tab and click the cell in the result set that represents the information
that you want to test for (for example, sbellum).
4. Click
Generate Assertions for the Value of a Cell in the toolbar below the Result set
window.
We want to test that sbellum appears in a cell in the LOGIN column.
5. In the Generate JDBC Result Set Value Assertion dialog, enter the test step (fail) to redirect if
the value is not found:
DevTest creates an assertion with the name Ensure JDBC Result Set Contains Expression (see
page 1554) in the Verify User Added step.
Note: The same assertion capabilities are available when a JDBC result set is displayed in
22-Jul-2016
479/2016
Screenshot of the Complex Object Editor inline assertion panel to add an assertion on the returned value
directly from the method call
2. To open the Status/Result pane where you can add the assertion, select the Expert Mode
check box in the left pane.
22-Jul-2016
480/2016
2.
DevTest Solutions - 9.5
The returned value upon executing the getPwd method is stored in the property
CurrentPassword.
3. Add an assertion that tests if the returned value is equal to the string "test". If it is not that,
then redirect to the Fail step.
4. Click Execute to execute this step.
Note: Inline assertions (and filters) do not result in an assertion being added to the test
step. Inline assertion management is always done in the Complex Object Editor.
For more details on the Complex Object Editor, see Complex Object Editor (COE) (see page 494).
Note: One test step contains as many gestures (tapping, swiping) as needed to complete
22-Jul-2016
481/2016
Add an Assertion
Follow these steps:
1. Open the mobile test case that you want to update.
2. To view the details of each step:
a. Click the test step that you want to review.
b. Click Mobile testing step in the element tree on the right to expand the details for the
step. You can also double-click the test step.
The Mobile Testing Step tab opens and shows a screenshot of the test application. The
Actions section at the top of the tab shows the individual actions that are performed in
the test step.
c. To view the screenshot that is associated with a specific action, click the action in the
Actions section.
3. Right-click the screenshot or a specific screen element in the bottom portion of the tab.
4. Click Add Assertion and select the assertion that you want to add.
The selected assertion is added to the test step.
5. Click Save.
Select and Edit an Assertion
Follow these steps:
1. Close the Mobile test step editor.
2. Click Assertions in the element tree on the right to view the assertions for the selected test
step.
The Assertions tab expands.
3. Double-click the assertion that you want to modify.
The Assertion editor opens.
4. Complete the fields for the selected assertion.
The editor is unique for each type of assertion. For more information about a specific type of
assertion, see the following pages:
Ensure Same Mobile Screen (see page 1584)
Ensure Screen Element Matches Expression (see page 1585)
Ensure Screen Element is Removed (see page 1585)
22-Jul-2016
482/2016
5. Click Save.
Assertions Toolbar
All the elements have a toolbar to add/delete/reorder at the bottom of the element.
Reorder an Assertion
You may need to reorder assertions, because assertions are evaluated in the order in which they
appear. Changing the order of the assertions can affect the workflow.
To reorder an assertion:
Select the assertion in the Elements tab and click
toolbar.
Move Up or
Rename an Assertion
You can rename an assertion.
Complete one of these steps:
Select the assertion and right-click to open a menu. Click Rename to rename the assertion.
Select the assertion and click the Rename icon on the toolbar.
To change the assertion name back to the default assertion name, select the assertion and click
Revert to Default Name.
483/2016
After the assertion is added to a step, you can select its next step to be executed, if you want the
workflow to be altered.
To configure the next step of an assertion:
1. To open the menu, right-click the assertion in the model editor.
2. Select If triggered, then and do one of:
Select to generate a warning or error.
Select to end, fail, or abort the step.
Select the next step to be executed.
Data Sets
A data set (see page ) is a collection of values that can be used to set properties in a test case
while a test is running. This capability provides a mechanism to introduce external test data to a test
case.
Data sets are often rows of data that can be inserted into properties as Name/Value pairs. However,
sometimes a data set returns a single property value.
Data sets can be created internal to DevTest, or externally: for example, in a file or a database table.
While a test is running, DevTest assigns properties to the steps specified in the data set editor. When
the last data value or values are read from the data set, one of the following actions can occur:
The data can be reused starting at the top of the data set
The test can be redirected to any step in the test case
Data sets can be global or local.
More Information:
22-Jul-2016
484/2016
Example
This example has the following components:
Three concurrent virtual users
A local data set with 100 rows of data
A test case that loops over 100 rows of data and stops
Each virtual user sees all the 100 rows of data in the data set.
For a local data set
A single run (one vuser): Test Case A, gets the first row of data: Record 1, customer 1
22-Jul-2016
485/2016
Each virtual user (instance) gets its own copy of the data set that is local.
22-Jul-2016
486/2016
When local is marked and Test Case A has a loop, the test reads every row of data in the data set.
Each run gets its own copy of the data set.
Test Case Looping
Often the data in a data set drives the number of times a test case is run.
Looping can be implemented several ways:
A test is set to finish when all the data in the data set is exhausted.
A test is set to reuse the data set when the data is exhausted.
A test step can call itself, or you can configure a series of steps that loops until the data in the
data set is exhausted.
Use a numeric counter data set to cause a specific step to run a fixed number of times. You can set
the frequency at the step level or the test case level.
For example, consider a test where we want to test the login functionality of our application using
100 user ID/password pairs. To achieve this test, set a single step to call itself until the data set (with
100 rows of data) is exhausted. When the data set is exhausted, the test can redirect to the next
natural step in the case, or the End step. Alternatively, you can use a counter data set with the user ID
/password data set.
If you configure a global data set in the first step of a test case to end the test when the data set is
exhausted, all test instances end for a staged run.
This overrides other staging parameters such as steady state time. Local data sets do not end the
staged run in this fashion nor will data sets on steps other than the first test.
22-Jul-2016
487/2016
Read Rows from Delimited File data set window, with Random check box selected
A test has 15 virtual users, and a data set has two rows of data.
Scenario 1: At the end of data -> Start over
The first user would read the first row of data; the second user would read the second row. The third
user starts over and reads the first row, and so forth. This cycle continues until all 15 users have run
the test. The first row was read eight times; the second row seven times.
Scenario 2: At end of data -> Execute End step
22-Jul-2016
488/2016
A test has 100 virtual users, and the data set has 1500 rows of data. Tests are running concurrently.
Scenario 1: At the end of data -> Start over
When the 100 users start, they would read the first 100 rows of data. Depending on the staging
document, as cycles end, the users start new runs of the test case and consume more rows of the
data set. If all rows are consumed and the test run has not ended, it restarts with the first row until
the test run ends.
Scenario 2: At end of data -> Execute End step
The test run ends after 1500 cycles.
A test has 10 virtual users, and the data set has 10,000 rows of data. The staging document
specifies that the test will run for 2 minutes.
The 10 users start and read the first 10 rows of data and continue consuming rows of data from the
10,000 rows. How fast they run determines how far down the data set they go. At the two-minute
mark, the test ends.
Read Rows from Delimited File data set window, with Random check box selected
The top panel of the data set editor is common to all data set types. The options are:
22-Jul-2016
489/2016
When you click Test and Keep, the first row of data is loaded. A message confirms that the data set
22-Jul-2016
490/2016
22-Jul-2016
491/2016
Companions
A companion is an element that runs before, after, or both before and after every test case
execution. Companions are used to configure behavior that is global to the test case. These behaviors
can include simulating browser bandwidth and browser type, setting synchronization points in load
tests, and creating a sandbox class loader. In a way, companions set a context for the test case
execution.
Companions work as helpers for the test case, before any of the steps are executed.
At the bottom of every element, there is a toolbar that has icons to add, delete, and reorder.
22-Jul-2016
492/2016
Add a Companion
To add a companion:
1. Open a test case and click the Companion element in the right panel.
2. Click
3. Each companion has a different editor. To open the appropriate editor, select the required
companion. Each companion type, with all its parameters, is described in detail in Companion
Descriptions (see page 1610).
DevTest Hooks
DevTest hooks are an automatic global means to execute logic at start/end of a test case. Hooks
apply that logic to all test cases in the environment where the hook is deployed.
Hooks work similarly to companions; they run before a test starts and after a test finishes.
The difference is, hooks are defined at the application level, and every test case in DevTest runs the
hooks. If a hook exists, it is used for every test case.
A hook is a mechanism that allows for the automatic inclusion of test setup logic or teardown logic, or
both, for all the tests running in DevTest. An alternate definition of a hook is a system-wide
companion. Anything that a hook can perform can be modeled as a companion.
Hooks are used to configure test environments, prevent tests that are improperly configured or do
not follow defined best practices from executing, and provide common operations.
Hooks are Java classes that are on the DevTest class path. Hooks are NOT defined in .lisaextensions
file, but in local.properties or lisa.properties as
lisa.hooks=com.mypackage1.MyHook1,com.mypackage2.MyHook2
A hook is executed or invoked at the start and end of all subprocesses in a test case in addition to the
test case itself. If a test case has three subprocesses, the hook logic is executed four times. The logic
is executed once for the main test and once for each of three subprocesses.
To prevent a subprocess from executing startHook, endHook, or both, include the following action:
Stringmarker=(String)testExec.getStateValue(TestExec.FROM_PARENT_TEST_MARKER_KEY)
"marker"issetto"true"onlywhenitisasubprocess.
if(!"true".equals(marker))
allstart/endHooklogicherethatshouldnotbeexecutedwheninsubprocess
493/2016
22-Jul-2016
494/2016
Select to use the Local JVM and enter com.itko.examples.dto.Customer in the Make New Object Of
Class field.
To load the object into the object editor, click Construct/Load Object.
After the object is loaded, the Complex Object Editor is invoked.
22-Jul-2016
495/2016
22-Jul-2016
496/2016
Note: If the response is XML and it is larger than 5 MB, it is displayed in plain text with no
DOM view. To adjust the default limit, configure the gui.viewxml.maxResponseSize
property.
The previous window shows a Java object of type Customer loaded in the editor. This object was
loaded using the Dynamic Java Execution test step, but any number of operations could have loaded
it. No calls have been invoked on the object.
More Information:
Object Call Tree Panel (see page 497)
Data Sheet and Call Sheet Panels (see page 498)
Using Data Sets in the COE (see page 506)
Usage Scenarios for Simple Objects (see page 508)
Usage Scenarios for Complex Objects (see page 513)
497/2016
Description
The type (class) of the object currently loaded, followed by
response from calling toString method of object.
The input parameters (type and current value) for the enclosing
method.
Icon for the Complex Object Editor
input parameter
The return value (current value if call has been executed) for the
enclosing method.
Icon for the Complex Object Editor
return value
Clicking an item in the Object Call Tree displays the appropriate set of tabs in the Data Sheet and Call
Sheet in the right panel.
Right-clicking an item in the Object Call Tree displays a menu. You can execute all calls or you can
mark all calls as unexecuted in the Object Call Tree.
Data Sheet
22-Jul-2016
498/2016
Call Sheet
In the Call Sheet tab, the Complex Object Editor shows the methods/fields calls that are available,
and their return types.
Doc
The Doc tab displays any Java API documentation that has been made available for this class.
499/2016
Object Panels
The Data Sheet, Call Sheet, and Doc tabs are available when an object is selected in the Object Call
Tree.
22-Jul-2016
500/2016
22-Jul-2016
501/2016
502/2016
503/2016
Note: The in-line filters and assertions that are applied are not seen in the filters or
assertions list.
You can edit the value in this panel in the Simple Value field.
To use a property as the value, click the Property Value option button to display the following panel.
22-Jul-2016
504/2016
To open the available property keys, type the property name, use the pull-down menu, or click
List.
For input parameters that are objects, the following panel is displayed.
22-Jul-2016
505/2016
For input parameters that are objects, the following panel is displayed.
506/2016
To initiate the creation of a new DTO data set from the object editor:
1. When a DTO object appears in the call list, right-click the Name or Actual Type to open a
menu.
2. Select the data set Read From Excel Data set to display the following window.
22-Jul-2016
507/2016
3. The parameters on this window are required to initiate the creation of this data set.
Complete the following fields:
Property Key
The property that stores the current values from the data set.
Type of File
Select if it is an existing XLS file or to make a new XLS file.
File
The name of the Excel file that is the template for the DTO data.
Open file in Excel
Opens the spreadsheet in Excel.
End test when no more rows
Ends the test after all rows are read.
22-Jul-2016
508/2016
For a simple DTO, parameter values can be entered into the Data Sheet panel as fixed values or
properties. In the previous example, city could be set equal to the property currentCity.
To enter parameters using the DTO setters in the Call sheet panel:
22-Jul-2016
509/2016
1. In the Call Sheet tab, select a getter, such as setCity(java.lang.String city) and click
Method.
The method runs and COE opens in the Call tab.
22-Jul-2016
Add
510/2016
2. Enter the parameter value as a fixed value or a property. Use the DevTest property syntax,
propname.
3. Click Execute to invoke the method.
4. Repeat this procedure to set other DTO properties.
22-Jul-2016
511/2016
A simple Java object, java.util.Date, has been loaded in the COE using a Dynamic Java Execution step
In this case, Expert Mode must be used, because the Date type is not a DTO. In fact the COE forces
Expert mode.
22-Jul-2016
512/2016
But we can still enter parameter values and invoke methods. In the previous example, we execute
the parse method, which requires one input parameter. We have entered it as a string value, 9/1
/2007.
Note: In Expert Mode, we use the Null or Use Property check box to denote the parameter
type. If neither is selected, fixed value is entered. We would not use the {{ }} property
syntax here. Even if we were entering a property rather than a string value, we would enter
only the property name.
Because we are in Expert Mode, we can add inline filters and assertions.
22-Jul-2016
513/2016
This DTO is complex because its properties are not all simple values, such as primitives or strings.
However, because of its DTO structure, we can still use Simple Mode.
Each of the properties must be given values before the Customer object can be used.
locations
An array of Address objects
poAddr
An Address object
since
A Java Date object
22-Jul-2016
514/2016
22-Jul-2016
515/2016
3. This DTO enables the use of Simple mode. Do not select the Expert Mode check box. The
poAddress property is identified as type Address.
4. In a Simple mode, when you clear the Null parameter, the Address object is expanded to
expose its properties. You know, from the previously illustrated Simple Data Object Scenario,
that Address has simple properties. You can enter them as values or properties in the Value
column.
22-Jul-2016
516/2016
Invoke Method.
7. Types is an array of integers. To add as many integers as the array requires, click
Add at
the bottom. In the previous example, we added four elements and entered values for each.
8. Click Execute to invoke the setTypes method.
22-Jul-2016
517/2016
Invoke Method.
11. In the previous example, we added three Address objects. Two are complete, and we are
ready to expand the third Address object to enter property values. When complete, click
Execute to invoke the setLocations method. Notice that you can click one of the Location
elements in the Object Call Tree to display and edit properties in the Data Sheet tab.
22-Jul-2016
518/2016
This holds true for all the properties that are listed in the Object Call tree.
12. Select the getSince method on the Call Sheet and click
Invoke Method.
The input parameters for the Data object are displayed and can be given values.
22-Jul-2016
13.
519/2016
22-Jul-2016
520/2016
1.
DevTest Solutions - 9.5
22-Jul-2016
521/2016
All the properties can be edited in this window. The Integer and String properties can be
added in the Value column. The remaining properties expand to show their properties when
you clear the Null box for the property. If the property is a single object, it expands to expose
its properties. If it is an array or collection, you can add the appropriate number of elements.
This graphic shows a snapshot of the editing process.
22-Jul-2016
522/2016
The locations property has two elements; the types property has three elements. The poAddr
object is of type Address, and is expanded exposing simple string properties.
Note: DevTest does not support sending I/O streams from test steps, properties, or both.
More Information:
Add a Test Step (see page 524)
Configure Test Steps (see page 527)
Add Filters - Assertions - Data Sets to a Step (see page 528)
22-Jul-2016
523/2016
More Information:
Add a Test Step - Example (see page 524)
22-Jul-2016
524/2016
2. Select the main category of the step to be configured (for example, Web/Web Services, Java
/J2EE, and Utilities).
The sub category opens.
3. To add a step to the test case, click the step.
The step editor for the selected test case opens. Each step type has a different step editor.
4. To add a Dynamic Java Execution step after the Get User step, right-click the Get User step
and select the Dynamic Java Execution step.
The step is added and the step editor for the Dynamic Java Execution step opens.
22-Jul-2016
1.
525/2016
1. To add the basic step information, open and expand the Step Information tab in the Elements
tree in the right panel.
The Step Information editor opens.
22-Jul-2016
526/2016
next to the
Step Information
The Step Information element is the first element in the elements panel and carries the name of
the step as its label. In the preceding example, the Step Information element is Get User. You can
change the name of the test step after expanding it. Then set the next step to be executed after
the current step is completed. The other options are explained in Add a Test Step (see page 524).
Step Type Information
This field has the title of the selected step type (Enterprise JavaBean Execution in our example).
Each step is different and has a specific configuration requirement. Therefore, each step has a
custom editor to provide the information that is required to run the step and test it (and possibly
to get a response also). This custom editor opens up when the element is expanded.
Log Message
This message appears after any step is added in DevTest and lets you set the log message that
appears after the step runs.
Assertions
The addition and configuration of one or more assertions. In an assertion configuration, you also
must set the next step to be executed when the assertion fires.
Filters
The addition and configuration of filters. Filters are added under the filter element of each test
step.
22-Jul-2016
527/2016
Data Sets
The addition and configuration of one or more data sets that apply to the test step. The data sets
are fired before executing a test step. Any property that the data set sets, is available to the test
step.
Properties Referenced
A read-only list of properties that the step references (reads).
Properties Set
A read-only list of properties the step sets (assigns a value).
Documentation
Notes accompanying the test step.
You can add/delete an element to a step by clicking the icons at the bottom of the individual
elements.
For detailed information about adding filters, see Add a Filter (see page 456).
For detailed information about adding assertions, see Add an Assertion (see page 471).
on the toolbar.
528/2016
End Step
The End step brings an end to a workflow and is run when a workflow completes successfully. The
entire test case is deemed to be successful if the execution reaches this step.
Fail Step
The Fail step is the end of a workflow, and is run when a workflow fails due to an error event. If the
execution reaches this step, the entire test case is deemed to have failed. The Fail step is the default
for many internal DevTest exceptions (for example, an EB exception). However, assertions can set the
Fail step as the next step to fail a test case.
Abort Step
The Abort step is also the end of a workflow, and is run when a workflow is abruptly aborted. If this
step is reached, the test case is deemed to be aborted (without completion).
22-Jul-2016
529/2016
Replay to a Step
You can do a quick replay of a test case to any step in the case.
To replay to a step:
1. Click the step and right-click to select Replay to here.
2. The case is replayed to the selected step.
22-Jul-2016
530/2016
22-Jul-2016
531/2016
More Information:
Create a Test Case (see page 532)
Open a Test Case (see page 532)
Save a Test Case (see page 533)
Test Cases in Model Editor (see page 533)
Add Test Steps (see page 534)
Configure the Next Step (see page 534)
Branching and Looping in a Test Case (see page 535)
Import Test Cases (see page 536)
Response (.rsp) Documents (see page 536)
Accessing Files in Another Project (see page 537)
Test Case Toolbar (see page 537)
532/2016
22-Jul-2016
533/2016
22-Jul-2016
534/2016
22-Jul-2016
535/2016
A response document maintains the HTTP response for the following items:
22-Jul-2016
536/2016
Icon
22-Jul-2016
Description
537/2016
Set the currently selected step as the starting step in the workflow.
Set the Starting Step Icon
Click to open a menu and create steps by recording a test case in the
DevTest browser. You can record a test case with:
Web Recorder (HTTP proxy)
Mobile Recorder
22-Jul-2016
538/2016
Zoom in.
Zoom in icon
Zoom out.
Zoom out icon
Building Subprocesses
A subprocess is a test case that is called from another test case instead of run as a stand-alone test
case.
Subprocesses can be used as modules in other test cases, which increases their ability to be reused.
You can build a library of subprocesses that can be shared across many test cases.
In a programming language, a subprocess would be referred to as a function or a subroutine.
A test case must be self-contained. The value for all the properties that are used in the test case must
come from in the test case. A subprocess expects the test step that runs it to provide some property
values (input properties). When the subprocess completes, it makes property values available to the
calling step (return properties).
Subprocesses can be nested. A subprocess can call another subprocess.
Note: If a subprocess that calls another subprocess is marked as Quiet, all called
subprocesses will be Quiet.
You create the steps in the subprocess in the same way you do for a regular test case, with the
following differences:
Mark the test case as a subprocess in the Test Case Information tab of the test case (as explained
in Create a Subprocess Test Case (see page 540)).
Do not add data sets as you would in a test case. Instead, the data set must be part of the calling
22-Jul-2016
539/2016
Note: The think time parameter in the parent test case (the test case that calls the
subprocess) is propagated to the subprocess. To make your subprocess think times run
independently of the calling process, set a testExec property with the name lisa.subprocess.
setThinkScaleFromParent to "false" so that you can decide for each subprocess. For a
global override, set lisa.subprocess.setThinkScaleFromParent=false in local.properties.
You can build subprocesses from scratch, or you can convert an existing test case into a subprocess.
The Execute Subprocess (see page 1871) test step simplifes calling a subprocess test case.
More Information:
Create a Subprocess Test Case (see page 540)
Convert an Existing Test Case into a Subprocess (see page 541)
Subprocess Example (see page 542)
540/2016
4. Enter the values for Key (property name), Description, and Default Value.
The default value is used when you run the subprocess in the Interactive Test Run facility
(ITR). This value lets you test the subprocess as though it was a regular test case. These
default values are ignored when another test step invokes the subprocess.
5. To remove unwanted properties, click Delete
To remove properties that you do not want to be made available to the calling step, click Delete
After the input and return properties are checked, and all the input parameters have default values,
you can run the subprocess in the ITR.
22-Jul-2016
541/2016
3. Remove any data sets that provide the values of properties that are to be input properties of
the new subprocess.
The exception is when a data set is integral to the subprocess logic.
4. Remove any properties from configuration files, or a companion that initializes parameters
that are to be input properties of the new subprocess.
5. After the input and output properties are checked and all the input parameters have default
values, you can run the subprocess in the ITR.
Subprocess Example
The following example shows a subprocess that is derived from the jms.tst test case in the DevTest
examples directory, and a test case that calls it.
A subprocess that was derived from the jms.tst test case in the examples directory, and a test case that calls this
subprocess
One data set, order_data, was removed from the original test case. The order_data data set provided
the values for order_num in the original test case. The property order_num is now an input property.
22-Jul-2016
542/2016
Subprocess Example 2
The following graphic shows a test case with one test step: Execute Subprocess.
22-Jul-2016
543/2016
Subprocess example 3
Step1 is of the type Execute Sub Process, and it runs the subprocess jms (shown previously).
The input property matches, and the calling step has asked for the lisa.jms-1.rsp property to be made
available after the subprocess has finished executing.
Building Documents
A staging document contains the information about how to run a test case.
An audit document lets you set success criteria for a test case in a suite.
You can apply metrics and can add events, which are used for monitoring the test case after the test
run.
A suite document can be used to run a collection of test cases.
22-Jul-2016
544/2016
More Information:
Building Staging Documents (see page 545)
Building Audit Documents (see page 560)
Understanding Events (see page 563)
Generating Metrics (see page 566)
Building Test Suites (see page 566)
22-Jul-2016
545/2016
22-Jul-2016
546/2016
547/2016
548/2016
Pacing depends on the ability of the load pattern to estimate the number of steady-state instances.
The number of steady-state instances running affects the pace at which steps run. These load
patterns are the only ones that can estimate that pace.
Immediately Ramp
The Immediately Ramp pattern applies when you are running only a few virtual users (instances) but
you want to specify the test duration. You are not concerned with any loading pattern. This pattern
starts all virtual users simultaneously.
To configure this pattern, enter the following parameters:
Instances
The number of virtual users.
Max Run Time
Select either No Max (the test case determines the time) or Maximum Run Time. In the latter
case, specify the Maximum Run Time. This setting overwrites any value that is entered for Cycles.
You can specify h for hours, m for minutes, s (or no letter) for seconds (default).
The graph at the bottom provides a graphical view of the pattern.
Manual Load Pattern
The Manual Load pattern gives you the most control over the loading and unloading of virtual users
(instances). This pattern is similar to the Stair Steps pattern, but it lets you specify both the number
of virtual users to add, and the time interval for each step in the pattern, individually.
To configure this pattern, you define each step as a row in a table. In each row, you define the time
interval and the number of virtual users to add or remove (the Instances Change column) for that
step. The elapsed time (the Total Time column) and the total number of virtual users (Running
Instances column) are automatically calculated.
In the Time Interval column, enter a time followed by h for hours, m for minutes, s (or no letter) for
seconds (default).
To add, remove, or change the current order of the steps, use the standard icons from the toolbar at
the bottom of the table.
You could have to scroll to see these icons. Alternatively, you can select a row and can use the
following shortcuts:
Add a line: Ctrl+Shift+A
Delete a line: Ctrl+Shift+D
Move line up: Ctrl+Shift+Up Arrow
Move line down: Ctrl+Shift+Down Arrow
Extended view: Ctrl+Shift+L
22-Jul-2016
549/2016
The Weighted Average pattern adds and removes virtual users (instances) based on a statistical
22-Jul-2016
550/2016
22-Jul-2016
551/2016
Each simulator is initiated with a defined number of virtual users that can be allocated. The default is
255. DevTest dynamically tracks the percent load and adds virtual users to specific simulators to try
to keep the load percentage as even as possible. Therefore, the simulator with the lowest percentage
load is a candidate for the next virtual user that is introduced into the system.
This distribution is useful when the system is already running tests from several other testers, and
you want to optimize your load distribution.
No parameters are required.
Dynamic Simulator Scaling with DCM
The Dynamic Simulator Scaling with DCM distribution requests that DevTest automatically
determine when to raise capacity to meet the needs of a running test and then automatically expand
the lab.
This distribution pattern includes the following parameters:
Checkpoint time
The interval at which DevTest evaluates whether more simulators are required. Enter the value in
seconds (for example, 300s) or minutes (for example, 5m).
DCM Dynamic Lab Name
If you stage to an existing coordinator and the test determines that it requires more capacity to
run the test, this parameter indicates which lab to activate to run more simulators. Include the
VLM prefix and the fully qualified lab name.
Maximum Expansion
The maximum number of simulators to create at the time of expansion. If you have a policy that
limits the number of simulators for each user, use this parameter to enforce it. The default value
of 0 means unlimited.
During the checkpoint evaluation, DevTest examines the performance of the simulators that are
currently running and how many more virtual users must be brought online. If more simulators are
required, DevTest starts the process of expanding the lab. When the simulators come online, DevTest
starts directing traffic to them.
Percent Distribution
The Percent Distribution distributes virtual users (instances) over the simulators, based on the
percentages that you specify.
The names of the running simulators (plus local) are available in a drop-down list in the Simulator
Name column.
Select a simulator and specify a percentage of virtual users for the simulator. Repeat this action for all
the simulators to include until you have 100 percent. Use integer values for the percentages.
Note: Although "Auto" appears as a choice in the drop-down list, it is not recommended.
"Auto" results in confusing allocations of virtual users because it competes with your
explicit distribution choices.
22-Jul-2016
552/2016
22-Jul-2016
553/2016
554/2016
The Metrics tab is divided into two sections. The top panel lists the default metrics, differentiated by
color code. The bottom panel has the sampling parameters.
You can change the color that is used to represent any metric in the staging document. Click the color
and select a new color and then save the staging doc. Change the color before staging the test.
You can add or delete metrics and set email alerts in the top panel.
The following types of metrics are available:
DevTest Whole-Test Metrics
DevTest Test Event Metrics
SNMP Metrics
JMX Attribute Reader (JMX metrics)
TIBCO Hawk
555/2016
Note: For the email alert to work, you also must set the SMTP server-related paths in the
lisa.properties file.
Sampling Parameters
The bottom panel has two slider bars that let you set sampling parameters:
Sample rate: This parameter specifies how often to take a sample, or record the value of a
metric. The sample rate is specified as a time period, and is the reciprocal of the sampling rate.
Samples per interval: This parameter specifies how many samples are used to create an interval
22-Jul-2016
556/2016
The preceding example uses 5 seconds per sample and 25 samples per interval. Those values produce
a metric value every 5 seconds and a summary value every 125 seconds.
The metric values are stored in XML files or database tables to include in reports (see reports (see
page 553)).
22-Jul-2016
557/2016
Enable IP Spoofing
If selected, IP addresses are spoofed for all supported test steps in a test case.
Version
IPv4: If selected, IPv4 addresses are spoofed.
IPv6: If selected, IPv6 addresses are spoofed.
Either IPv4 or IPv6 must be selected.
Selection Algorithm
Round Robin: Spoofed IP addresses are selected in a round-robin format.
Random: Spoofed IP addresses are selected in a random format.
IP Spoofing Support
IP spoofing is supported only for HTTP.
22-Jul-2016
558/2016
Note: Before you add IP addresses, ensure that you are an administrator.
On Windows, IP address information can be obtained by using the command-line utility ipconfig.
To add a single IP address, 192.168.0.201, use the netsh command-line utility.
netshinipaddaddress"LocalAreaConnection"192.168.0.201255.255.255.0
If these commands are successful, you can verify the new IP addresses by using the command-line
utility ipconfig /all.
22-Jul-2016
559/2016
22-Jul-2016
560/2016
Note: When you use audit documents, test step names cannot contain any short
description from the audit document that is used in the test. For example, if Abort is a
short description in the audit document, then you cannot use the word Abort in a test step
name.
The following graphic shows the audit document editor. The editor contains an Event Audits panel
and a Run for Audit Info panel.
22-Jul-2016
561/2016
2. In the new row, select the event name from the drop-down list in the Event ID column.
Each row has the following parameters:
Short Desc Contains
To filter an event by the value of the short description of the event, enter the keywords
from the short description in this column.
Must See
Select this check box if the event must occur during the test.
Must NOT See
Select this check box if the event must not occur during the test.
Fail Message
If this audit fails, a message to log.
3. Add more rows for each event that you want to include.
If you try to add event audits that logically conflict with each other, the editor displays a
warning message.
You can rearrange rows by clicking Up
You can delete rows by clicking Delete
and Down
22-Jul-2016
562/2016
Understanding Events
An event is a message that is broadcast, informing any interested parties that an action has occurred.
Events are created for every major action that occurs in a test case.
An event results every time a step runs, a property is set, a response time is reported, a result is
returned, a test succeeds, or fails, and more. You can see every event or filter out the events that are
not of interest.
Events are important when you are monitoring tests or analyzing test results.
You can observe events during an Interactive Test Run (ITR) by clicking the Test Events tab in the ITR.
The following graphic shows the Test Events tab.
22-Jul-2016
563/2016
The same can be done while monitoring a staged test or a test suite.
You can select events to be included in reports, and select events to be used as metrics that can be
monitored and included in reports.
For more information about reports, see Reports (see page 639). For more information about
metrics, see Generating Metrics (see page 566).
Note: Internal to DevTest, a step can also be referred to as a node, explaining why some events
have "node" in the EventID.
An EventID, a short value, and a long value characterize an event. EventIDs are keywords that
indicate the type of event. The short values and long values contain information about the event.
Their contents vary with the type of event.
More Information:
Event Descriptions (see page 1658)
22-Jul-2016
564/2016
Note: Internal to DevTest, a step can also be referred to as a node, explaining why some
events have "node" in the EventID.
More Information:
Event Descriptions (see page 1658)
22-Jul-2016
565/2016
Generating Metrics
Metric collection, our own metric calculation method, is an extensible reporting mechanism, and lets
you generate reports to various outputs.
Metrics lets you apply quantitative methods and measurements to the performance and functional
aspects of your tests, and the system under test.
The software metric is a measure of some property of a piece of software, a hardware system, or
their specifications. Quantitative methods using metrics have proved to be powerful in several areas
of computing, and testing is no exception.
Two broad groups of metrics are:
Gauge: A gauge provides an instantaneous reading of a value, such as response time or CPU
utilization.
Counter: A counter provides a continuous count of a property, such as the number of failed tests.
If a metric is a counter, then it is essentially an ever-increasing number during the test run (that is,
number of errors). When a metric is flagged as a counter, it is graphed differently in reports. The
value that is graphed is the difference between the current sample and the previous sample.
For most metrics, the type of metric (gauge or counter) is already known. When a metric could be
used as either, you can specify the type that you want.
Metrics can be added to the following staging documents and test suite documents. Test monitors
and quick tests can generate metrics. Information about specifying and generating metrics for each
document or test is available in sections about each editor.
Quick Tests (see page 593): Use to monitor the test.
Staging Documents (see page 554): Use to include in reports.
Test Suite Documents (see page 572): Use to include in reports.
Test Monitors (see page 594): Use to monitor tests.
566/2016
Top Panel
The top panel of the Base tab has basic information about the test suite as a whole.
To configure a suite, you also must enter parameters in all the sub tabs.
Basics Tab
This tab has the following parameters:
22-Jul-2016
567/2016
22-Jul-2016
568/2016
22-Jul-2016
569/2016
MAR Info
The MAR info name. Enter the name or select from the pull-down menu or browse to the file or
directory. When it is selected, click Open to open the respective file.
Staging Doc
The name of the staging document for this entry. Enter the name, select from the pull-down
menu, or browse to the document. If you leave this entry blank, the default staging document is
used. After it is selected, click Open to open the staging document. When you have selected a
staging document to use in this suite, the name of the staging document appears below the
Staging Doc field. The name is the same Run Name as you see on the editor tab when you are
editing the document.
Audit Doc
The name of the audit document for this entry. Enter the name, select from the pull-down menu,
or browse to the document. If you leave this entry blank, the default audit document is used.
After it is selected, click Open to open the audit document.
Coordinator Server
The name of the coordinator server to use with this entry. Select from the list of available
coordinator servers that are listed in the pull-down menu. This parameter is needed only if you
are running a DevTest Server.
Click Add
on the toolbar to add this entry to the list shown in the left panel. You can delete
icons.
After you have entered all your test entries, save your test suite document.
22-Jul-2016
570/2016
Attributes
The Attributes panel lists the available report types.
The following report types are available:
Default Report Generator (see page 639)
XML Report Generator (see page 639)
Parameters
Record All Events
If selected, records all events.
Record Properties Set/Referenced
If selected, records the set or referenced properties.
Record Performance Metrics
If selected, records the performance metrics. Use this value for load testing.
Record Request/Response/Screenshot
22-Jul-2016
571/2016
on the toolbar.
In the bottom panel, two slider bars enable you to set sampling parameters:
Sample rate: This value specifies how often to take a sample; that is, record the value of a metric.
22-Jul-2016
572/2016
22-Jul-2016
2.
573/2016
2. You can set the acceptable limits for the metric (low and high value), and the details to be
sent in an email. You must provide the name of your email server, and a list of email
addresses.
3. Add and delete email addresses by using the Add and Delete icons at the bottom of the
window.
4. When finished, click Close.
The MAR files are created from files in a project. After a MAR file is created, it is independent of the
project.
22-Jul-2016
574/2016
Contents of a MAR
MAR files contain one of the following primary assets:
Test case
Suite
Virtual service
Test case monitor
Suite monitor
MAR files also contain any secondary files that the primary asset requires.
For example, if the primary asset is a virtual service model, the MAR file also contains a service
image.
A MAR file can include the data set for a data-driven virtual service.
In addition, MAR files contain the following files:
MAR info file (see page 575)
MAR audit file (see page 576)
You can specify that a MAR file be optimized. When the MAR file is built, only those project files that
are required will be added. However, you can also configure an optimized MAR file to include one or
more non-required project files.
If a MAR file is not optimized, all the project files will be added.
Note: An archive is typically held in memory. Therefore, the use of optimized archives is
highly encouraged.
22-Jul-2016
Primary
Asset
Information Specified
Test case
Suite
Virtual
service
Virtual service model, configuration file, concurrent capacity, think time scale, and
auto restart flag
575/2016
All the information specified for a test case, plus the service name, notification email,
priority, and run schedule
Suite
monitor
All the information specified for a suite, plus the service name, notification email,
priority, and run schedule
When you use the stage/deploy related options, a MAR info file is created but not saved.
22-Jul-2016
576/2016
22-Jul-2016
577/2016
578/2016
Schedule Tab
Complete the following fields:
Start
The date and time when the monitor starts. For the time value, use a 24-hour clock.
Stop
The date and time when the monitor stops. For the time value, use a 24-hour clock. The stop date
and time must be later than the start date and time.
How often the monitor runs. Depending on the selection, more options could appear.
One Time: The monitor runs once, at the start date and time.
Every: Enter the frequency in minutes. The monitor runs every NN minutes. However, if the
previous run has not completed, CVS skips the run and try again at the next scheduled time.
CVS will not terminate a monitor after it has started.
Daily: The monitor runs once a day, at the time that is specified in the start time.
Weekly: Select one or more days of the week. The monitor runs once on each selected day, at
the time that is specified in the start time.
Monthly: Enter one or more days of the month. If you enter multiple days, you must be
separate them with spaces. For example, you could enter 1 15 30. If you specify a day that
does not occur in a specific month (such as 31) the day is ignored for that month. The monitor
runs once on each day, at the time that is specified in the start time.
22-Jul-2016
579/2016
CRON: Enter a standard cron specification. Cron is a standard UNIX syntax for specifying time
intervals. This approach allows the most flexibility when specifying a run schedule.
22-Jul-2016
580/2016
4. If you want the MAR to include any nonrequired project files, then move the files to the Files
to Include area.
The Files to Include area lists the required project files. The Files to Exclude area lists the
nonrequired project files.
5. From the main menu, select File, Save.
Build MARs
After you have created and edited a MAR info file, you can use the file to build a Model Archive (MAR)
(see page 574).
You can save the MAR to a folder that is inside or outside the project directory.
Follow these steps:
1. In the Project panel of DevTest Workstation, right-click the MAR info file and select Build
Model Archive.
The Build Model Archive dialog appears.
2. Navigate to the folder where you want to save the MAR.
3. Click Save.
Deploy to CVS
You can deploy a Monitor MAR info file (see page 578) to CVS.
Follow these steps:
1. In the Project panel of DevTest Workstation, right-click the .mari file and select Deploy to CVS.
A confirmation message appears.
2. To see the newly added monitor, go to the CVS Dashboard.
Options
Each option has a short version and a long version. The short version begins with a single dash. The
long version begins with two dashes.
-h, --help
Displays help text.
22-Jul-2016
581/2016
-s file-name, --show=file-name
Shows the contents of a MAR info file.
If the file name refers to a MAR info file, then it is written out. If the file name refers to an
archive, then both the audit and info entries are written out.
-c, --create
Creates one or more model archives from MAR info files.
To specify the MAR info file name to build the archive, use the --marinfo argument.
To specify the name of the archive to create, use the --archive argument.
If the --source-dir argument is used, then the --marinfo argument is taken as a name pattern to
look for in the full directory tree. In this case, the --target-dir argument must be used to note
where to place the created archives. This command also implies auto-naming of the created
archives.
-m mar-info-name, --marinfo=mar-info-name
The parameter that specifies the name of the MAR info file to read (if the --source-dir argument is
not used) or the MAR info file name pattern to look for (if the --source-dir argument is used). In
the latter case, if not specified, it defaults to .mari.
-s directory, --source-dir=directory
Specifies the directory where the tool searches for MAR info files to make archives from. The full
directory tree is searched for files that match the pattern that the --marinfo argument specifies.
-t output-directory, --target-dir=output-directory
Specifies the directory where archives are written.
When this argument is used, the created archives are automatically named based on the MAR
info file name with a numeric suffix as appropriate to ensure that no files are overwritten.
-a archive-file, --archive=archive-file
Specifies the name of the archive file to create.
When this argument is used, the --marinfo argument must specify a single existing MAR info file.
The --source-dir and --target-dir arguments are not allowed.
--version
Prints the version number.
Examples
The following example shows the contents of a MAR info file.
MakeMar--show=C:\Lisa\examples\MARInfos\AllTestsSuite.mari
The following example creates a model archive for every MAR info file in the examples\MARInfos
directory. The destination directory examples\MARs must exist before you run this command.
MakeMar--create--source-dir=examples\MARInfos--target-dir=examples\MARs
22-Jul-2016
582/2016
More Information:
Interactive Test Run (ITR) Utility (see page 584)
Stage a Quick Test (see page 593)
Stage a Test Case (see page 600)
Run a Test Suite (see page 607)
Run a Selenium Integration Test Case (see page 613)
Assumption of Load Testing (see page 617)
Test Runner (see page 618)
LISA Invoke (see page 622)
REST Invoke API (see page 1780)
Using the HP ALM Plug-in (see page 626)
22-Jul-2016
583/2016
More Information:
Start an ITR Run (see page 584)
Examine the Results of an ITR Run (see page 587)
Graphical Text Diff Utility (see page 591)
Click ITR
on the toolbar. The icon gives you the option of starting a new ITR run or
opening a previous ITR run.
The Interactive Test Run window opens.
2. (Optional) To change any settings, use the Settings tab.
22-Jul-2016
584/2016
Each step has a pull-down menu that contains all the steps in the test case. You can use this menu to
change the next step that will be executed. Select a step, and it will replace the current next step with
the one of your choice. After you change the step, the workflow will continue from the new step.
You manage the ITR by using the toolbar at the bottom of the Run tab.
Run the next step in the test case. After the step has run, you can examine the results (see
page 587) in the right panel. Click the icon again to run the next step that is listed, or select a
different step to run as described previously.
Run all of the steps in the test case. While the test is running, the icon changes into a Stop icon.
You can stop the test by clicking the Stop icon. When the last step has been executed, a dialog
indicates that the test is complete.
Start the test again. This feature is useful if you change your test case and you want to execute
it from the beginning.
Save the current ITR state. In the dialog, enter the name of the save file. The suffix .itr is
appended to the name. Subsequent saves overwrite this file.
Load a saved ITR. Browse to the .itr file that you want to load. The Saved ITR State contains the
information that is displayed in the tabs, capturing all the testing performed. To use the Saved
State, first open the test case that was used when the original tests were run.
To add or watch properties, open the property watch window.
22-Jul-2016
585/2016
You can filter out events and properties from the results tabs. You might not want to see some
verbose events. Likewise, you do not always want to clutter the property list with DevTest internal
properties.
Show CALL_RESULT
Include EVENT_CALL_RESULT events in the Test Events list.
Show NODERESPONSE
Include EVENT_NODERESPONSE events in the Test Events list.
Show Internal Props
Include all internal events in the property lists in the Initial State and Post Exec State tabs.
Auto Cleanup Auto-Runs
Clean up the Auto Runs automatically.
Auto Run Delay (secs)
In the Automatically Execute Test mode, the ITR pauses between each step execution. This setting
lets you change the pause interval. The ITR does not honor the think time, so this setting lets you
add a constant delay between each step execution.
Enable CA CAI
22-Jul-2016
586/2016
Response Tab
The Response tab displays the step response after executing a step.
The display uses the editor appropriate for the response type. For example, the Add User step in the
multi-tier-combo test case invokes the HTML/XML response.
The Get User step in the multi-tier-combo test case invokes an EJB that returns an object that is
displayed in the Complex Object Editor (https://wiki.ca.com/pages/viewpage.action?pageId=159580205).
22-Jul-2016
587/2016
Some editors include two icons that you can use to save the ITR state
browser
Note: If the response is XML and it is larger than 5 MB, it is displayed in plain text with no DOM
view. This limit can be adjusted with the gui.viewxml.maxResponseSize property.
Properties Tab
The Properties tab displays the state of the step after execution (Value) and immediately before
execution (Previous Value).
To show or hide DevTest internal properties, select or clear the Show Internal Props check box in the
Settings tab.
22-Jul-2016
588/2016
Properties that the step set are highlighted in green. Properties that were modified in the step are
highlighted in yellow.
22-Jul-2016
589/2016
Note: If the step calls a subprocess that contains an assertion, then the Test Events tab includes
the appropriate event for the assertion. For example, the Test Events tab can include an
Assertion fired event that occurred in the subprocess.
22-Jul-2016
590/2016
22-Jul-2016
591/2016
To start the Graphical Text Diff utility from the Interactive Test Run (ITR) utility:
1. Select the Test Events tab in the ITR.
2. Right-click a table row and select Select Left Text to Compare.
3. Right-click a table row to compare with and select Compare To.
The Graphical Text Diff utility opens for comparison.
While in the Graphical Text Diff utility, you can also load the contents by selecting a file.
Follow these steps:
1. Click the Select Contents tab in the Graphical Text Diff window.
2. To load the file, click Load from File.
The results of the diff are then displayed in the global tray panel component.
22-Jul-2016
592/2016
Note: You can also set the compare options in the Settings tab. For more information
about the compare options, see Graphical XML Side-by-Side Comparison (see page 1558).
Note: In most cases, these values should not be changed. Changing the default values for
these properties could result in the Graphical XML diff engine using more CPU or running
out of memory, or both.
22-Jul-2016
2.
593/2016
22-Jul-2016
594/2016
22-Jul-2016
595/2016
Current Scale
The vertical scale that is used on the graphs. You can adjust the graph scale on the Current
Interval Metrics graph for any metric. Adjust the scale by double-clicking the Current Scale cell
and selecting a new value from the drop-down list. You see the metric change scale on the
Current Interval Metrics graph.
Note: The default setting for Current Scale is Auto Scale at 100. The number in () shows
what Auto Scale has determined the scale value must be to fit all the data on the same 0100 graph. The value * scale = y coordinate on the graph. If you modify the scale, the
current value does not change. However, the calculation of determining the y coordinate
used on the graph could yield a different y coordinate. If the coordinate is greater than
100, the Y-axis limits also must grow to accommodate the larger values.
Current Value
The instantaneous value of the metric.
For detailed information about metrics, see Generating Metrics (see page 566).
Current Interval Metrics
For each metric in the Test Metrics Status panel, the Current Interval Metrics panel displays the
value at a specified time interval during the run.
To specify the time interval, use the slider at the bottom of the panel. You cannot adjust the value
after the run has started.
Summary Interval Graphs
The Summary Interval Graphs panel displays the value of each metric in the Test Metrics Status
panel, averaged over a specified time interval.
To specify the number of samples per interval, use the slider at the bottom of the panel. You cannot
adjust the value after the run has started.
22-Jul-2016
596/2016
Note: Under a load test, these UI elements are disabled. For a test case that DevTest
22-Jul-2016
597/2016
Simulators
The Simulators panel shows the status of the simulators in use.
Test Events
The Test Events panel displays the events. The most recent event appears at the top. The oldest
event appears at the bottom.
You can list events in real time by selecting the Auto Refresh check box at the bottom of the panel, or
you can refresh the list manually by clicking the Refresh icon, with the Auto Refresh box cleared.
Only those events that have not been filtered out are displayed.
For each event, the following information is displayed:
Timestamp
The time of the event
Event
The name of the event
Simulator
The name of the simulator in which the event was generated.
Instance
The instance ID and run number (separated by a forward slash)
Short Info
A short piece of information about the event
Long Info
A long piece of information about the event (if available)
22-Jul-2016
598/2016
To see a report on any failed test, double-click the Long Info field at the right of the window.
When the quick test starts, the Play icon changes to a Stop icon.
If you click Stop again, you are asked if you want to kill the test run.
When you stop a test, you are saying "do not start any new instances." No new instances are
started and a running test case does not loop back to the beginning. Tests that are running
complete all steps, then go to the end step.
When you kill a test, you are saying "stop all running instances as soon as possible." No new
instances will be started, and a running test case does not go to the next step. No end step is run.
Reports show that the test is still running, because the test never goes through an end step.
To replay a quick test, click Replay
22-Jul-2016
599/2016
Actions Menu
When you run a test and click Play to start the test, the following options are added to the Actions
menu.
Pause Metrics Collection
Un-pause Metrics Collection
Save Recent Metrics to XML Document
Save Recent Metrics to CSV Document
Save Interval Data to CSV Document
Save Interval Data to XML Document
Save Recent Events to CSV Document
Stage This Test
Stop Test
Restart Test (Reloads Documents)
Note: There are two choices for the coordinator: "Coordinator@default" and blank.
If you select blank, then the simulation starts on the workstation machine and it will
need connectivity to the DevTest database.
22-Jul-2016
600/2016
6. Click Stage.
The Test Monitor (see page 601) window opens. You can now select the metrics and events to
monitor, and then start the test case.
22-Jul-2016
601/2016
22-Jul-2016
602/2016
Note: The default setting for Current Scale is Auto Scale at 100. The number in () shows
what Auto Scale has determined the scale value must be to fit all the data on the same 0100 graph. The value * scale = y coordinate on the graph. If you modify the scale, the
current value does not change. However, the calculation of determining the y coordinate
used on the graph could yield a different y coordinate. If the coordinate is greater than
100, the Y-axis limits also must grow to accommodate the larger values.
Current Value
The instantaneous value of the metric.
The metrics are based on sampling. For example, the instances metric is the number of virtual users
running a test when the sample is taken. The number of instances that are waiting to run tests can be
a higher number. For example, if pacing is configured in the staging document, the instances metric
shows how many virtual users are running a test. This value can be less than the population of virtual
users that are allocated in the staging document. Assume that you have 250 steady-state virtual
users. If the instance count is 100, then the other 150 virtual users are waiting because pacing has
them on hold.
For detailed information about metrics, see Generating Metrics (see page 566).
Current Interval Metrics
For each metric in the Test Metrics Status panel, the Current Interval Metrics panel displays the
value at a specified time interval during the run.
To specify the time interval, use the slider at the bottom of the panel. You cannot adjust the value
after the run has started.
Summary Interval Graphs
The Summary Interval Graphs panel displays the value of each metric in the Test Metrics Status
panel, averaged over a specified time interval.
To specify the number of samples per interval, use the slider at the bottom of the panel. You cannot
adjust the value after the run has started.
22-Jul-2016
603/2016
22-Jul-2016
604/2016
Note: Under a load test, these UI elements are disabled. For a test case that DevTest
determines is a load test, you cannot change the test to send, for example, individual step
responses. Sending more than the basic events negates the value of the load test.
Simulators
The Simulators panel shows the status of the simulators in use.
Test Events
The Test Events panel displays the events. The most recent event appears at the top. The oldest
event appears at the bottom.
You can list events in real time by selecting the Auto Refresh check box at the bottom of the panel, or
you can refresh the list manually by clicking the Refresh icon, with the Auto Refresh box cleared.
Only those events that have not been filtered out are displayed.
For each event, the following information is displayed:
Timestamp
The time of the event
Event
The name of the event
Simulator
The name of the simulator in which the event was generated.
Instance
The instance ID and run number (separated by a forward slash)
Short Info
A short piece of information about the event
Long Info
A long piece of information about the event (if available)
22-Jul-2016
605/2016
To see a report on any failed test, double-click the Long Info field at the right of the window.
When the test case starts, the Play icon changes to a Stop icon.
If you click Stop again, you are asked if you want to kill the test run.
When you stop a test, you are saying "do not start any new instances." No new instances are
started and a running test case does not loop back to the beginning. Tests that are running
complete all steps, then go to the end step.
When you kill a test, you are saying "stop all running instances as soon as possible." No new
instances will be started, and a running test case does not go to the next step. No end step is run.
Reports show that the test is still running, because the test never goes through an end step.
To replay a test case, click Replay
22-Jul-2016
606/2016
22-Jul-2016
607/2016
22-Jul-2016
608/2016
One approach is to select the events to filter out manually. Another approach is to select one of the
following event sets from the drop-down list and then customize the selections as necessary:
Terse Event Set
Common Event Set
Verbose Event Set
Load Test Set
You can clear all the check boxes by selecting No Filter. You can select all the check boxes by selecting
Filter All Events.
Test Events
The Test Events area lists the events as they occur, with the most recent on the top of the list. You
can list events in real time by selecting the Auto Refresh check box at the bottom of the panel. You
can refresh the list manually by clicking the Refresh icon, with the Auto Refresh check box cleared.
For each event, the following information is displayed:
Timestamp
The time of the event
Event
The name of the event
Simulator
The name of the simulator in which the event was generated.
Instance
The instance ID and run number (separated by a forward slash)
Short Info
A short piece of information about the event
Long Info
A long piece of information about the event (if available)
22-Jul-2016
609/2016
Suite Results
The Suite Results area displays a list of all the tests in the suite, with icons.
The green icon indicates that the test has completed and passed.
The red icon indicates that the test has completed and failed.
The blue icon indicates that the test is still running.
To display the test monitor for tests that are still running, click View Test
panel.
For completed tests, you can select the test name to see a status in the text area to the right. Seeing
the status is most useful to see why a specific test failed.
Status Window
The Status window displays the status of the test that is selected on the left.
The following test is running:
22-Jul-2016
610/2016
A failed test status shows information available about why the test failed.
At the bottom of the Stage Suite Execution panel is a toolbar.
The first set of icons manages individual tests in the suite. To use these icons, first select a test in the
Test List section of the Results tab. The following functions are available for a specific selected test:
Stop
Test
Stops the test after it reaches the next logical end/fail. It does not start a new
cycle.
Stop Test
icon
Kill Test Stops the test immediately after the current step completes.
Kill Test
icon
View
Test
This tool will work only for currently running tests. This starts the test monitor
for the selected test.
View Test
icon
The second set of icons manages the test suite itself, or when a suite is running:
Run Suite
Close Suite
22-Jul-2016
611/2016
More Information:
Use the Registry Monitor (see page 1534)
1. In the Registry Monitor, select a test from the running tests list and click Optimize Test
The Optimizer panel opens with the name of the staging document at the top.
22-Jul-2016
612/2016
Increment (#instances)
The number of extra virtual users to add to the system at the update frequency. Enter a
numeric value.
Update Frequency (millis)
The number of milliseconds between increments
Note: Although Selenium integration supports the following web browsers: Internet
Explorer, Firefox, Chrome, and Safari, it is constrained by the Selenium Web Driver support
that is defined at http://www.seleniumhq.org/docs/01_introducing_selenium.
jsp#supported-browsers-and-platforms. (http://www.seleniumhq.org/docs
/01_introducing_selenium.jsp#supported-browsers-and-platforms)
613/2016
1.
DevTest Solutions - 9.5
b. Locate the Chrome driver in the Third Party Browser Drivers NOT DEVELOPED by
seleniumhq section and download it.
2. Add the following properties to the project configuration file you use to run test cases on
Chrome.
Key: selenium.browser.type
Value: Chrome
Key: selenium.chrome.driver.path
Value: The full path to the Chrome driver you downloaded. For example: C:\lisase\chromedriver.exe.
Note: Add these properties to project.config before you add them to other project
configuration files.
3. Right-click the selected project configuration file in the Project panel and select Make Active.
4. Run the test.
Tip: If the Google Chrome browser is installed at the user level; for example, its installation
location is something like C:
\Users\XYZ\AppData\Local\Google\Chrome\Application\chrome.exe, then when you stage
the test case, you could see an error message like "org.openqa.selenium.
WebDriverException: unknown error: cannot find Chrome binary."
To avoid this error, ensure that the Google Chrome browser is installed as a system wide
installation. It must be installed in a location like C:\Program Files (x86)
\Google\Chrome\Application\chrome.exe, so it can be accessed by all accounts.
614/2016
2. Add the following properties to the project configuration file that you use to run test cases on
Internet Explorer.
Key: selenium.browser.type
Value: IE
Key: selenium.ie.driver.path
Value: The full path to the Internet Explorer driver you downloaded. For example: C:\lisase\IEDriverServer.exe.
Note: Add these properties to project.config before you add them to other project
configuration files.
3. Right-click the selected project configuration file in the Project panel and select Make Active.
4. Modify your Internet Explorer security settings.
a. Open Internet Explorer.
b. Click Tools, Internet Options.
c. Click the Security tab.
d. Verify that the Enable Protected Mode check box set the same (selected or cleared)
for the following zones. If this setting is inconsistent, Selenium does not start.
Internet
Local Intranet
Trusted Sites
Restricted Sites
e. Click OK to save your changes and close the Internet Options window.
5. Run the test.
615/2016
Note: Add this property to project.config before you add it to other project
configuration files.
7. Right-click the selected project configuration file in the Project panel and select Make Active.
8. Run the test.
616/2016
4. On the remote computer, run the following command from a new command prompt (for
Internet Explorer, Firefox, or Chrome):
java-jarselenium-server-standalone-2.xx.0.jar-rolenodehubhttp://localhost:4444/grid/register-Dwebdriver.chrome.driver=c:\lisase\chromedriver.exe-Dwebdriver.ie.driver=c:\lisa-se\IEDriverServer.exe
For Safari, run the following command from a new command prompt:
java-jarselenium-server-standalone-2.xx.0.jar-rolenode-hubhttp://localhost
:4444/grid/register-Dwebdriver.chrome.driver=c:\lisa-se\chromedriver.exe-Dwebd
river.ie (http://Dwebdriver.ie).driver=c:\lisa-se\IEDriverServer.exe -browser
browserName=firefox -browser browserName=chrome -browser browserName="internet
explorer" -browser browserName=safari
5. On the local computer, add the following properties to the project configuration file you use
for running test cases on the remote browser.
Key: selenium.broswer.type
Values: IE, Firefox, Safari, or Chrome
Key: selenium.remote.url
Value: URL to the remote Selenium Server hub. For example,
http://your_remote_hostname:4444/wd/hub.
If you plan to run Selenium Integration tests on multiple browsers, create a project
configuration file for each browser type. You can then run the tests on multiple browsers by
making different configuration files active for each test run. For more information about
configuration files, see Configurations (see page 444).
Note: Add these properties to project.config before you add them to other project
configuration files.
6. Right-click the selected project configuration file in the Project panel and select Make Active.
7. Run the test.
The test runs on the selected browser on the remote computer.
Note: For more information about using Selenium Server in a Grid configuration,
see https://code.google.com/p/selenium/wiki/Grid2.
617/2016
An extra message can appear suggesting that you turn off CAI in the staging document.
If your test is part of a suite, the Test Monitor window usually provides no information. Because load
tests can generate events faster than the user interface can keep up, some events are ignored. To see
these run-time metrics, change the following property:
lisa.load.auto.reconfigure=false
To tune the parameters of what CA Application Test thinks is a load test, adjust the following
properties:
lisa.loadtest.aggressive.detection=false
lisa.coordinator.step.per.sec.load.threshold=100
lisa.coordinator.vuser.load.threshold=150
If a staging document has a Default Report Generator, it is assumed NOT to be a load test.
If the number of non-quiet steps per second exceeds 100 or the number of virtual users exceeds 150,
then the test is assumed to be a load test.
If you set the lisa.load.auto.reconfigure property to true, then any test with a staging document that
has 0% think time or a test consisting entirely of steps with 0 think time is considered a load test.
Another result of the load testing assumption is that if load testing has been turned on automatically,
an event is generated that documents the change.
Test Runner
The Test Runner command-line utility is a "headless" version of DevTest Workstation with the same
functionality, but no user interface. That is, it can be run as a stand-alone application.
Test Runner lets you run tests as batch applications. You give up the opportunity to monitor tests in
real time, but you still can request reports for later viewing.
On Windows, Test Runner is available in the LISA_HOME\bin directory as a Windows executable,
TestRunner.exe.
22-Jul-2016
618/2016
To display help information for Test Runner, use the -h or the --help option.
TestRunner-h
More Information:
Run a MAR with Test Runner (see page 619)
Run a Test Case with Test Runner (see page 620)
Run a Suite with Test Runner (see page 620)
Other Test Runner Options (see page 621)
Multiple Test Runner Instances (see page 622)
Test Runner Log File (see page 622)
619/2016
The following example assumes that the registry is running on another computer.
22-Jul-2016
620/2016
Runtime Properties
The -D option enables you to add runtime properties to Test Runner execution. This option is useful
for adding tags that can be queried in reporting. The format is D< name>=<value>.
-Dyear=2015
-Dphase=beta
22-Jul-2016
621/2016
to
{{log4j.rootCategory=DEBUG,A1}}
LISA Invoke
LISA Invoke is a REST-like web application that lets you perform the following tasks with a URL:
Run test cases
Run suites
Run model archives (MARs)
You can perform these tasks synchronously or asynchronously.
The response consists of an XML document.
The lisa.properties file includes the following configuration properties for LISA Invoke:
lisa.portal.invoke.base.url=/lisa-invoke
lisa.portal.invoke.report.url=/reports
lisa.portal.invoke.server.report.directory={{lisa.tmpdir}}{{lisa.portal.invoke.report.
url}}
lisa.portal.invoke.test.root={{LISA_HOME}}
622/2016
The following XML response indicates that the test case passed.
<?xmlversion="1.0"encoding="UTF-8"?>
<invokeResult>
<methodname="RunTest">
<params>
<paramname="stagingDocPath"value="examples/StagingDocs/1user1cycle0think.stg"
/>
<paramname="coordName"value="Coordinator"/>
<paramname="configPath"value=""/>
<paramname="testCasePath"value="examples/Tests/AccountControlMDB.tst"/>
<paramname="callbackKey"value="64343533653737312D343765312D3439"/>
</params>
</method>
<status>OK</status>
<result>
<status>ENDED</status>
<reportUrl><![CDATA[htp://localhost:1505/index.html?lisaPortal=reporting
/printPreview_functional.html#Idstr=61653261643936342D613636392D3435&curtstr=T]]><
/reportUrl>
<runId>61653261643936342D613636392D3435</runId>
<passcount="1"/>
<failcount="0"/>
<warningcount="0"/>
<errorcount="0"/>
<message>AccountControlMDB,Run1User1Cycle0Think</message>
</result>
</invokeResult>
22-Jul-2016
623/2016
The following XML response shows the callback key in the result element.
<?xmlversion="1.0"encoding="UTF-8"?>
<invokeResult>
<methodname="RunTest">
<params>
<paramname="stagingDocPath"value="examples/StagingDocs/1user1cycle0think.stg"
/>
<paramname="coordName"value=""/>
<paramname="configPath"value=""/>
<paramname="testCasePath"value="examples/Tests/AccountControlMDB.tst"/>
<paramname="callbackKey"value="61663038653562382D663566372D3432"/>
<paramname="async"value="true"/>
</params>
</method>
<status>OK</status>
<result>
<callbackKey>61663038653562382D663566372D3432</callbackKey>
<message>TheLISAtest'examples/Tests/AccountControlMDB.
tst'waslaunchedasynchronouslyatMonMar2616:05:39PDT2012.</message>
</result>
</invokeResult>
624/2016
625/2016
Note: See Install the DevTest ALM Plug-in (see page 153) for installation information.
More Information:
Set up DevTest Tests in HP Quality Center (see page 626)
Run DevTest Tests in HP Quality Center (see page 632)
Troubleshooting the DevTest ALM Plug-in (see page 635)
Note: Users must belong to the QA-Tester role in HP ALM, or to a role that has the same
rights as QA-Tester.
You can access the JavaScript and VBScript templates referred to in this procedure by selecting Start,
All Programs, DevTest, Quality Center Plugin. The templates are functionally equivalent.
22-Jul-2016
626/2016
We recommend that the test, staging, and config files are added as links (URLs) rather than
attaching the actual file. As a result, it is not necessary for the changes of the test to be
uploaded back to ALM. Click the link icon and then file a properly constructed URL to the file.
If the file is on the same system as the ALM instance, it must be in a form similar to following
information:
For MAR files and MAR info files, you can use a single file attachment and three file attachments.
In this procedure, you create one or more URL attachments. The following example is a URL for a test
case file:
file:///C:/DevTest/examples/Tests/rest-example.tst
The following graphic displays the Attachments tab. The URL for a test case file has been added. You
specify the links to the staging and configuration files. The test case requires the test, configuration,
and staging files.
22-Jul-2016
627/2016
Parameter Substitution
You can change the location of the file for a test to run the same test case with multiple staging and
configuration. You create a substitution by applying a single file attachment, MAR file, MAR info file,
or three file attachment (test, configuration, and staging) in the Attachments tab.
The following substitutions are available:
Parameter
You configure the parameter substitution in the attachment path from the Parameters tab. The
values in this tab overwrite the custom and the global properties for a test case.
Custom field
Custom field parameter substitution only applies to the test plan. Use the Details tab to add
custom fields.
The following graphic shows an example of a MAR information file with a parameter substitution:
22-Jul-2016
628/2016
The substituted parameter is located between the <<< and >>> characters: for example,
<<<marifile>>>. After the file is attached, the <<< and >>> characters are encoded to %3C%3C%3C
and %3E%E3%3E for example, %3C%3C%3Cmarifile%3E%E3%3E. The absolute file path is converted
to the file URL.
The following graphic displays the location of the MAR information file in the Description pane.
22-Jul-2016
629/2016
The following graphic displays the Parameters tab with the name of the substituted MAR information
file:
22-Jul-2016
630/2016
22-Jul-2016
4.
631/2016
4. Select the Attachments tab and add a URL to the test case file, MAR file, MAR info file, or
three file attachments.
5. Attach a DevTest test file, staging document, and configuration file to the test plan in Quality
Center.
6. Attach a MAR file to the test plan in Quality Center or ALM.
7. Save the VAPI-XP test.
After you set up a DevTest test in HP Quality Center, you can run the test from the Test Plan module
or from the Test Lab module. Test Plan is for local testing only.
For test cases:
If a coordinator is running, it is used to run the test case.
If a coordinator is not running, the Test Runner utility is used to run the test case locally.
For MAR files and MAR info files:
If the file specifies a coordinator, the coordinator must be running.
File specifies a local coordinator.
To run the test from the Test Plan (debug mode), locate the test and click the Test Script tab. From
there, you can click the green arrow (Execute Script). The test starts executing, and its output shows
up in the output window. You are notified when the test completes.
To run the test from Test Lab:
1. Click the Test Lab icon on the right panel.
2. Create a Test Set.
3. Click the Select Tests tab in the top menu bar.
The Test plan tree opens on the right.
4. Using the Green arrow in the Test Plan tree, add the test to a valid test set.
5. Run the single test or the entire test set.
6. Once the test has completed, check the status of the test from the Test Set window or check
the history of the test in the Test Instance Properties window.
22-Jul-2016
632/2016
Depending on the structure of the test, a test run shows different results. If the test has multiple
cycles that execute, then you see a list of cycle history results and its pass or fail status. If the test has
only one cycle, then you see a list of steps for that test.
Note: Subprocess steps show as PASSED or FAILED, but the steps within a subprocess do
not appear in ALM.
The following graphic shows the results from a run of the rest-example test case in the Test Lab:
<img class="confluence-embedded-image" title="DevTest Solutions - Source > .Run DevTest Test in
HP Quality Center v9.5 > HP ALM results from a run of rest-example test cases in the Test Lab.png
(Screen capture of HP ALM results from a run of rest-example test cases in the Test Lab)" alt="Screen
capture of HP ALM results from a run of rest-example test cases in the Test Lab" src="https://docops.
ca.com/download/attachments/317329173/HP%20ALM%20results%20from%20a%20run%20of%
20rest-example%20test%20cases%20in%20the%20Test%20Lab.png?
version=1&modificationDate=1457387574214&api=v2" data-image-src="/download/attachments
/317329173/HP%20ALM%20results%20from%20a%20run%20of%20rest-example%20test%20cases%
20in%20the%20Test%20Lab.png?version=1&modificationDate=1457387574214&api=v2" dataunresolved-comment-count="0" data-linked-resource-id="317329172" data-linked-resourceversion="1" data-linked-resource-type="attachment" data-linked-resource-default-alias="HP ALM
results from a run of rest-example test cases in the Test Lab.png" data-base-url="https://docops.ca.
com" data-linked-resource-content-type="image/png" data-linked-resource-container-id="
317329173" data-linked-resource-container-version="1" data-location="DevTest Solutions - Source > .
Run DevTest Test in HP Quality Center v9.5 > HP ALM results from a run of rest-example test cases in
the Test Lab.png" data-element-title="Screen capture of HP ALM results from a run of rest-example
test cases in the Test Lab" data-image-height="159" data-image-width="770">
DevTestConnection.properties File
The DevTestConnection.properties file contains connection information and is created during the
installation of the DevTest ALM plug-in. The file is located in the LISA_HOME\alm-plugin directory.
See Install DevTest ALM Plug-in (see page 153) for installation information. You can edit the
connection parameters in the file. Setting the parameters in the DevTestConnection.properties file
sets the parameters at the global level for tests. All DevTest tests that use the same connection,
timeout interval, and log file location overwrites the hardcoded parameters in the plug-in.
If you want to change the connection, timeout, or log settings for a specific test, edit those
parameters in the Parameters tab of the test case.
The file contains the following connection values:
22-Jul-2016
633/2016
dt_hostname
The name of the host that is hosting the DevTest registry.
dt_scheme
The protocol HTTP or HTTPS used to connect to the DevTest registry.
dt_port
The port that is used to connect to the DevTest registry.
dt_coordinator
The coordinator of the DevTest registry.
dt_username
The username that is used to connect to the DevTest registry.
dt_password_encrypted
The encrypted password that is used to connect to the DevTest registry.
The password is encrypted using the following methods:
The DevTestConnection.properties file is created during the installation of DevTest ALM plugin or
Using the InstallationUtility executable (see page 153) to generate a new DevTestConnection.
properties file
The encrypted password can be overwritten with a plain text password by the following methods:
Remove the encrypted password from the DevTestConnection.properties file. Add the
clear text password value to the DevTestConnection.properties file.
Change the password at the test level in the Parameters tab.
Timeout Values
The following timeout values can be set in the DevTestConnection.properties file or in the
Parameters tab of a test:
dt_lockWaitTimeout
The amount of time in milliseconds to wait to acquire a lock on a DevTest test or run instance.
dt_testRunTimeout
The amount of time in milliseconds to allow the DevTest test to run.
dt_waitTimeout
The amount of time in milliseconds to allow data retrieval for DevTest.
634/2016
Run-time Error [-2147467261]: Value Cannot be Null or Parameter Name: Environment Variable for
DevTest Not Set: LISA_HOME
LISA_HOME might not have been created after running all of the services.
Symptom:
You receive any of the following errors:
Run-time Error [-2147467261]: Value Cannot be Null
Parameter Name: Environment Variable for DevTest Not Set: LISA_HOME
Solution:
1. Verify that LISA_HOME is listed in the Environmental Variable settings.
2. Do one of the following steps:
If LISA_HOME is not listed, add it to the Environmental Variable settings.
22-Jul-2016
635/2016
2.
DevTest Solutions - 9.5
If LISA_HOME is listed, exit the HP ALM client executable from Task Manager and re start
the HP ALM client.
Timeout Errors
For messages indicating timeout errors, address the following options by enabling a specific timeout
in the HP ALM VBScript or JavaScript:
Wait Timeout
The following options set the timeout retrieval of the Test ID and Cycle ID. Increase the timeouts
for test cases that might take longer than 30 seconds to run. The default is 30000 milliseconds.
Long GetWaitTimeout
void SetWaitTimeout(long waitTimeoutInMillis)
Add the function code in the VBScript or the JavaScript to increase the timeout for extracting the Test
ID and Cycle ID. This information is used to extract the test result.
Lock Wait Timeout
The following options set the lock acquisition timeout. The default is 10000 milliseconds.
long GetLockWaitTimeout()
void SetLockWaitTimeout(long lockWaitTimeoutInMillis)
Test Run Timeout
The following options set the timeout for running the test and waiting for a result. The default is
60000 milliseconds.
long GetTestRunTimeout()
void SetTestRunTimeout(long testRunTimeoutInMillis)
Debug Flag
The following options set the log levels to debug. Set to True for more debug messages.
bool IsDebug()
void SetDebug (bool isDebug)
636/2016
Note: This page assumes a basic understanding of SSL or its successor, TLS.
22-Jul-2016
637/2016
22-Jul-2016
638/2016
Reports
You determine what data is collected for reports by specifying reporting parameters in one of three
areas:
Quick Tests (see page 593)
Staging Documents (see page 545)
Test Suites (see page 566)
You can specify the specific events or metrics you want collected for each test case or test suite you
run. You select between three report generators that store reporting data in either a database or an
XML file. You also determine how long the reporting data is kept.
After the reports are generated, they can be viewed and managed later, shared with colleagues, or
exported to other locations.
View Reports
View reports from the DevTest Portal. For more information, see View and Navigate Reports (see
page 377).
More Information:
Report Generator Types (see page 639)
Changing Reporting Databases (see page 641)
Note: When this report generator is selected, CA Application Test will not automatically
configure for load testing.
22-Jul-2016
639/2016
Note: An API key must be created to integrate DevTest with CA Agile Central. See Configure
CA Agile Central (see page 159)for complete steps.
In the Parameters area of the report generator, use the following option to identify the test case:
Build Number Launch State Key
The build number, obtained from the launch state with the property key you enter here. Launch
state is set before the test starts to run. The "launch of the test means that you are going to set
an extra property, in this case the BUILD_NUM or build number for the system under test. Set the
property when staging the test with
Test Runner (see page 618) with the D option
invoke (see page 622)with the 0 option
with DevTest Portal by selecting Run with Options (see page 372) and setting the BUILD_NUM
property to the build number.
The property (the default name is BUILD_NUM but you can change the name) is saved in the
default report and can be searched from the reporting portal, so you have a consistent search in
CA Agile Central and in DevTest.
You use CA Agile Central to manage the test cases. The test cases show the build number and
whether the tests passed or failed.
The Test Case Id is assumed to be the prefix of the DevTest test name (delimited by "-", "_", or " " for example, TC0001-testName).
22-Jul-2016
640/2016
By default all of the DevTest databases share a common Derby database connection pool as defined
here.
lisadb.pool.common.driverClass=org.apache.derby.jdbc.ClientDriver
lisadb.pool.common.url=jdbc:derby://localhost:1528/database/lisa.db;create=true
lisadb.pool.common.user=rpt
lisadb.pool.common.password=rpt
For example, to change the reporting database to connect to Oracle, first define a new database pool
configuration.
lisadb.pool.mypool.driverClass=oracle.jdbc.OracleDriver
lisadb.pool.mypool.url=jdbc:oracle:thin:@//myhost:1521/orcl
lisadb.pool.mypool.user=rpt
lisadb.pool.mypool.password=rpt
When you enter the Reporting Portal, you can mouse over the database icon on the upper-right
corner of the window to get the details about the database you are using.
More Information:
22-Jul-2016
641/2016
642/2016
Record a Website
DevTest Workstation provides an HTTP recorder to test a website test case using a proxy recorder.
This helps track your path through the website and automatically creates test steps for each HTTP
request that is generated while recording.
Note: Before recording, disable caching or flush the cache in your browser so that the web
recorder can get the client request parameter encoding from some server response
packets for multibyte encoding systems. If the web recorder cannot capture the response
packets, it decodes or encodes the parameter with ISO-8859-1 as the default and the
captured parameters may get garbled.
2. Click Record Test Case for User Interface, Web Recorder (HTTP Proxy).
You can also select Actions, Record Test Case for User Interface, Web Recorder (HTTP Proxy)
from the main menu.
This lets you start the browser that is used to record and play back HTTP tests.
If there is a test case already open in the active tab, you are asked whether you want to
replay the tests in the browser.
If there is no test case open in DevTest Workstation, the Test Recorder window opens,
where you enter the name of the website to record.
3. Enter the URL for the web page to test.
22-Jul-2016
643/2016
3.
DevTest Solutions - 9.5
Note: Entering "localhost," for example: http://localhost:8080/lisabank/, does not
work with HTTP Proxy recording. For the URL, use the host name or IP address
instead of "localhost."
Port Usage
By default, the DevTest Proxy recorder uses port 8010 for recording.
If you do not want to use this port, you can override the setting in the lisa.properties file with the
following property: lisa.editor.http.recorderPort=8010.
To start the recording, click Start Recording to start the Web recorder, or click Proxy Settings to
configure the proxy.
The following pages are available.
Configure Proxy Settings (see page 644)
Start Recording (see page 645)
View Recorded Transactions (see page 645)
View in ITR (see page 646)
22-Jul-2016
644/2016
Note: Typically the proxy server challenges any request when authentication is required. If
the proxy server does not send the challenge, setting this field forces the authentication
header to be set with the first request.
Click OK to save your changes and set the proxy settings.
Start Recording
To start recording the test:
1. Click Start Recording in the Test Generator.
The Test Recorder window opens up and displays the web page URL loaded.
2. You can test the web page by entering information as a user would.
3. After you are done, click Stop Recording at the bottom of the Test Recorder window to stop
recording your browser activity.
The Recorded Elements window opens.
4. Click Commit Edits to complete your recording.
645/2016
View in ITR
You can view all these transactions again when you run this test case in the ITR.
See the View, Source, and DOM Tree tabs to see more information about the recorded step.
Note: If you are using a mobile simulator to record, the mobile simulator window
also opens.
Important! Do not perform these actions in the mobile simulator directly. DevTest
Workstation sends the actions that you perform in the Test Recorder to the
simulator automatically.
22-Jul-2016
646/2016
The Test Recorder highlights each screen element that you interact with. A red outline
indicates a screen position. A green outline indicates the more specific screen element. When
you point your cursor to a specific screen element, a tooltip window identifies the element.
There are often multiple screen elements that correspond to a specific screen position. The
recorder selects the most likely screen element, but the other possible elements display in the
tootip as Alternate Targets. Press Alt+Tab or Option+Tab to toggle between the available
targets.
7. To add additional actions or gestures manually while you record, right-click the screen or the
specific element in the Test Recorder, then select the action to insert.
For example, you can manually insert a "Shake," change the orientation, or insert a specific
assertion during the recording process. For more information about the available actions, see
Modify Mobile Test Steps (see page 1948).
Note: One step in a mobile test case contains as many gestures (tapping, swiping)
as necessary to complete the step. These substeps, or actions, appear in the Actions
table when you double-click a test step.
8. Click Stop Recording when you have captured all of the actions for the test.
The recorder window and the mobile simulator close. The new test case is populated with test
steps that represent the mobile actions that are captured while recording.
9. To view the details of each step:
a. Click the test step to review. Each test step contains a screenshot of the action being
performed.
b. To expand the details, click Mobile testing step in the element tree on the right.
The Mobile Testing Step tab opens and shows a screenshot of the test application. The
Actions section at the top of the tab shows the individual actions that are performed in
the test step. To highlight the associated element in the screenshot, click an action.
c. To view the screenshot that is associated with a specific action, click the action in the
Actions section.
For more information about modifying a recorded test step, see Modify Mobile Test
Steps (see page 1948).
For more information about adding assertions to the test step, see Add an Assertion to
a Mobile Test Step (see page 481).
22-Jul-2016
3.
647/2016
on the toolbar.
Note: Select whether to start a new ITR run or open a previous ITR run (if you have
run the ITR previously).
3. Click ITR
on the toolbar.
Note: Select whether to start a new ITR run or open a previous ITR run (if you have
run the ITR previously).
22-Jul-2016
648/2016
Mobile Testing
Mobile testing extends basic DevTest functionality for developing, staging, and monitoring tests cases
to the testing of mobile iOS, Android, and Hybrid applications. You can easily create test cases by
recording interactions with your mobile applications. You can then modify those tests like you would
any other DevTest test cases by adding individual actions, assertions, and filters to each step.
The Mobile Test Recorder lets you record in the following ways:
Record directly from a device that is connected to your machine via the USB port.
Record using installed Android and iOS simulators.
Record using cloud-based Android and iOS simulators for a more scalable solution.
Mobile Testing lets you create a single test case that you can then test against multiple devices. This
ability, coupled with the collection of available simulators, greatly simplifies the process of
developing and testing applications for a variety of mobile devices.
The following illustration shows a mobile testing environment with attached devices and cloud-based
simulators.
The following illustration shows a mobile testing environment with installed and cloud-based
simulators.
22-Jul-2016
649/2016
Note: For more information about setting up mobile testing, see Setting Up the Mobile
Testing Environment (see page 159).
650/2016
Note: Application files must be a part of the project workspace before you record a test.
Make sure you add all applications that you want to test to the projects Data\mobile
folder so they are visible in the Configure Mobile Session dialog.
22-Jul-2016
651/2016
If you want to keep certain properties the same for multiple tests, you can define those properties
with Mobile Settings.
Follow these steps:
1. From the Actions menu, click Mobile, Settings.
You can define both general mobile properties and Lab-specific credentials.
2. Click OK to save the properties.
When you start a test, the pre-defined properties are selected in the Configure Mobile Session
dialog.
22-Jul-2016
652/2016
Note: An AVD (see page 163) or Simulator are treated the same as real devices. The Device
Name is used to select the AVD by name.
22-Jul-2016
653/2016
Configuration
Properties that are used for configuration.
Key
ANDROID_HOM Strin
g
E
lisa.mobile.
target.
automation
Session
Properties that are used instead of assets to configure sessions. These settings can also be set in the
Configure Mobile Session dialog (see page 652).
Key
Description
lisa.mobile.
target.app.
version
lisa.mobile.
target.
platform
iOS or Android
lisa.mobile.
target.os.
version
The OS version.
iPhone or iPad
lisa.mobile.
target.device.
family
A substring used to match a device name.
22-Jul-2016
654/2016
Description
lisa.mobile.
target.device.
name (http://lis
a.mobile.target.
device.name)
lisa.mobile.
target.lab
lisa.mobile.
target.type
Multipurpose URL for configuring the lab location. This is managed by Lisa if using
lisa.mobile.
target.lab.url Local Appium.
User for SauceLabs account.
lisa.mobile.
saucelabs.user
lisa.mobile.
saucelabs.
access.key
Access key.
Perfecto host.
lisa.mobile.
perfecto.host
Perfecto user.
lisa.mobile.
perfecto.user
22-Jul-2016
lisa.mobile.
perfecto.
password
Perfecto password.
lisa.mobile.
remote.user
lisa.mobile.
remote.
password
lisa.mobile.
session.
keepalive
When running a mobile test via subprocess, the session is kept alive by default. To
make the session close after the subprocess step, set this to false. When running in
normal mode set this property to true, to keep the mobile session alive after the test
completes.
lisa.mobile.
appium.
arguments
655/2016
Description
For example, lisa.mobile.appium.arguments = --no-reset requires Appium to not
reset the state between sessions. Using this argument enhances performance by
retaining the initial configuration choices that are saved to the state. Note that you
can accomplish a similar result for cloud-based testing, such as Perfecto, with lisa.
mobile.appium.arguments = --no-install.
For a complete list of Appium arguments, see Appium Server Arguments (http://appiu
m.io/slate/en/master/?ruby#appium-server-arguments).
Test Validation
Properties that are used for modifying the way *.tst files are validated.
Key
bool false
lisa.
mobile. ean
test.
validate
.fail.
execute
When true, test execution will fail with an error if the *.tst file is invalid. Set to
false to log the issue and continue on error.
bool false
lisa.
mobile. ean
test.
validate
.fail.
initialize
When true, LISA Workstation will not load invalid *.tst test files.
lisa.
mobile.
appium.
startup.
strategy
Defines the wait / notification strategy property options for Appium. Four
options are available:
1. Set autodismissal of notifications, wait three seconds, then proceed
with session establishment
2. Set autodismissal of notifications, wait 10 sec, then proceed with
session establishment
3. Wait three seconds, proceed with session establishment
4. Wait ten seconds, proceed with session.
The wait times (3,10) can be overwritten by another property, lisa.mobile.
appium.startup.delay.
lisa.
mobile.
appium.
startup.
delay
22-Jul-2016
This setting sets the longer delay in seconds for options 2 and 4 in the lisa.
mobile.appium.startup.strateg property.
656/2016
22-Jul-2016
657/2016
Generate Tests
You can automatically generate test cases using Voyager.
Follow these steps:
1. From the Actions menu, click Mobile, Launch Voyager.
The Voyager configuration dialog opens.
2. The Asset field displays if you are still using assets for your mobile tests (by setting lisa.mobile.
use.assets=true). In the Asset drop-down list, select the mobile asset where you want to run
the Voyager test.
A mobile asset must be defined for this drop-down menu to display.
3. In the App field, enter or select the application that you want Voyager to access. If you are
using assets, the configured app for the selected asset already displays in this field.
4. In the Data Set field, select an existing data set from the drop-down list, or click New to create
a new one.
5. If your application requires authentication, enter its credentials in the Account and Password
fields.
6. In the App Graph field, enter or select a name for the data file that contains the Voyager data.
Note: The data file for the test can be found under the Data folder in the Project
Panel.
Note: Tests are created each time a new page is found, and the database is saved
after Voyager is stopped.
8. In the Output Folder field, enter a location for your .appgraph file, or accept the default
location.
9. Click Reconfigure SauceLabs if the SauceLabs account or access key has changed. If SauceLabs
is not configured, the SauceLabs dialog opens before starting Voyager.
10. Click OK to start Voyager.
The Voyager Dashboard opens. As pages are crawled, the current page displays. The number
of unique pages displays at the top.
22-Jul-2016
658/2016
3. Click Record Test Case for User Interface, Generate Mobile Steps.
The Page Selection dialog opens.
Note: If you are using a mobile simulator to record, the mobile simulator window
also opens. This only happens when running Voyager. In this case, the steps are
generated from data that has already been recorded. For this dialog to populate,
you must have run Voyager at least once.
Note: For this dialog to populate, you must have run Voyager at least once.
3. Select the .appgraph file that contains the step you want to add to your test.
4. Click on a recorded page.
5. Verify that the pages were added to the database.
22-Jul-2016
659/2016
Note: Data sets are saved into the workspace under Data/Voyager/Datasets with a .
22-Jul-2016
660/2016
Browse
Specify where to locate the data file.
Select from File System, Class Path, or URL.
Sheet Name
Specifies the Excel sheet (tab) to pull data from.
Open XLS File
Click to open the Excel file with the XPath data. You can make any additional edits.
8. Click OK on the data set dialog.
9. Click OK on the Voyager dialog to launch Voyager.
The data set is used to populate the text fields while crawling the app.
You can also gather XPath information from an existing test case, either manually recorded or
generated by Voyager.
Follow these steps:
1. Open the mobile test.
2. Locate the XPath for the fields that receive input. Click Mobile testing step in the element
tree on the right to expand the details for the step.
The Mobile Testing Step tab opens and shows a screenshot of the test application.
3. Right-click and select Copy to copy the XPath information.
22-Jul-2016
1.
2.
3.
4.
661/2016
5.
Clear the Use Host GPU check box under Emulation Options. If it is not visible, enlarge the
dialog.
6.
Click OK.
22-Jul-2016
Mobile Gesture
iOS Native App Android Native App iOS Hybrid App Android Hybrid App
Tap
Yes
Yes
Yes
Yes
Long Tap
Yes
Yes
Yes
Yes
662/2016
Yes
Yes
Yes
Yes
Swipe Screen
Yes
Yes
Yes
No
Pinch
Yes
Yes
Yes
No
Zoom
Yes
Yes
Yes
N/A
Rotate
Yes
Yes
Yes
N/A
Scroll To
Yes
Yes
Yes
N/A
Yes
Yes
Yes
Shake
Yes
Yes
Yes
N/A
Back
No
Yes
No
Yes
Go to Background
Yes
Yes
Yes
Yes
Hide Keyboard
Yes
Yes
Yes
Yes
Work Remotely
Both remote testing and remote recording are supported with Mobile Testing.
What's the difference?
Remote testing tests physical iOS and Android mobile devices that are connected to a computer
at one location, which another computer then connects to from a different location. Remote
testing logs into a remote Workstation registry. After logging in, the local computer acts as a
controller to the remote computer. All apps and assets reside on the remote computer. The local
computer tells the remote computer to start the recording on the remote computer.
Remote recording lets you record mobile tests on a remote computer during a local session. The
remote recordings can then be run on the local computer (Windows or Mac). The user provides
the host address for the remote computer while on the local computer. After logging in, the local
computer acts as a controller to the local computer only. All assets and apps reside locally. The
recorded test is saved locally but all the actions take place on the remote computer.
Remote Recording
Remote recording lets you record mobile tests on a remote computer during a local session. The
remote recordings can then be run on the local computer (Windows or Mac).
When recording a test case remotely, the test case is created and controlled on the local computer.
The remote computer is the endpoint, where the device or simulator resides. The availability of these
remote devices to record on lets you create a testing strategy that can use various operating system
and device combinations.
The local computer must be running the Registry and the Workstation to test remotely. The remote
computer must include DevTest Workstation, as well as:
An AVD and Android SDK if you are recording an Android test.
XCode must be installed to make a remote iOS test recording.
A running registry.
Remote recording uses the following process:
22-Jul-2016
663/2016
Note: An iOS test requires a remote Mac for playback and recording. An Android test can
play back on both Mac and Windows.
The following procedure explains how to run a remote test for a native application running on an
Android device. In this example, the Android device is connected to a remote Mac.
Follow these steps:
1. Start the registry and log in to DevTest Workstation on the local Windows computer.
2. Start the registry on the remote Mac.
3. Click Create steps by recording or templating.
The Configure Mobile Session (see page 652) dialog opens.
4. Under the Lab drop-down list, select Remote.
5. Click the yellow Lab field label.
The project.config file opens.
6. Under the Lab folder, click Remote.
7. Enter the Host address for the remote Mac, as well as the User name and Password.
8. Click OK to the Configure Mobile Session dialog.
9. Click OK.
10. Click Start Recording at the bottom of the recorder window when it starts up.
11. Click Stop Recording when you have captured all the actions for the test.
The recorder window and the mobile simulator close. The new test case is populated with test
steps that represent the mobile actions that are captured while recording.
You can play back the test on the local Windows computer while it is connected to the Mac. The test
is saved locally but all the actions take place on the remote Mac.
22-Jul-2016
664/2016
Remote Testing
Use remote testing to test physical iOS and Android mobile devices that are connected to a computer
at one location, which another computer then connects to from a different location. The availability
of remote devices lets you create a testing strategy that can use various operating system and device
combinations.
Remote testing lets you run your mobile device tests on various operating system combinations, such
as:
Mac to Windows
Windows to Mac
Windows to Windows
Mac to Mac
Remote testing with DevTest Workstation uses the following process:
1. Connect DevTest Workstation from a local computer to the registry, simulator, and
coordinator running on a remote computer where a physical mobile device is connected.
2. Create a test case on your local computer.
3. Set the remote settings are identified in the Configure Mobile Sessions dialog.
4. Stage the test case on the local computer, running against the remote computers registry,
simulator, and coordinator that you are connected to.
Note: You can only run tests on Android devices from a Windows computer as an endpoint.
You can run both Android and iOS tests from a Mac as an endpoint.
The following procedure explains how to run a remote test for a native application running on an
Android device. In this example, the Android device is connected to a Windows computer running the
registry, simulator, and coordinator. DevTest Workstation on the Mac then connects to the registry,
simulator, and coordinator on the Windows computer (or the "remote computer"), as shown here:
22-Jul-2016
665/2016
Remote Lab
To use the device and simulator capabilities on a remote computer only, use the Remote Lab. The
typical situation for using a remote lab is to run/record iOS tests from a Windows computer, or if you
want to run/record a test on a device that is attached to a remote computer. The following
procedure describes the scenario of running DevTest Solutions on a Windows computer and doing
iOS testing with a Mac computer.
Follow these steps:
1. Start the registry, simulator, and coordinator on the Mac.
2. Start DevTest Workstation on the Windows computer.
3. Connect to the local registry.
4. Create a project in DevTest Workstation on the Mac.
5. Create a test case on the Windows computer.
22-Jul-2016
6.
666/2016
Application Signing
All iOS apps must be code signed and provisioned to launch on a device. Provisioning is the process of
preparing and configuring an app to launch on devices and use app services. If you did not prepare
IPA signing on your iOS app during the Mobile Testing preinstallation process (see page 163) (see
Prepare IPA Signing), you can sign the apps when you record a test. Using this process, iOS
applications that need signing are copied to a temporary directory, signed, and then used in the test.
The original applications are not modified.
Before this functionality can be used, however, you must set two properties:
MOBILE_PROVISION = path to iOS_Team_Provisioning_Profile_.mobileprovision
The MOBILE_PROVISION property must point to the full path to the provisioning file. To run tests
on remote simulators, the *.mobileprovision file must reside in the project and its path must be
parameterized using {{LISA_PROJ_ROOT}}.
For example: {{LISA_PROJ_ROOT}/Data/mobile/iOS_Team_Provisioning_Profile_.mobileprovision
22-Jul-2016
667/2016
IOS_CERTIFICATE = the certificate name as shown in Keychain Access (do not use the certificate
file name)
The IOS_CERTIFICATE property must be set to the certificate name. An exact match for the
certificate name is not required. For example, you can use "iPhone Developer" and that would be
enough for a match. But if you have other iOS certificates, a better idea would be to use the
entire certificate name.
When you record a test and set up the mobile properties using the Configure Mobile Session dialog,
you can select an attached device and an application to run on that attached device. That application
is then validated, and the App field label turns red if the application is not provisioned to run on the
device. If that happens, you can set up the application once using your certificate and provisioning
file.
Follow these steps:
1. Click the red App field label.
The Sign Once dialog displays.
2. In the Provisioning field, select the provisioning file that is associated with the app, or click
the folder to browse to the file location.
3. In the Certificate field, enter the certificate name.
4. Click OK.
The file path and the certificate name are validated and you return to the Configure Mobile
Session dialog. The invalid app ( {PROJ_ROOT_PATH}/Data/mobile/[application] ) is replaced
with a version signed with the provided provisioning file and certificate. Mobile Testing then
keeps the signed version.
If the certificate cannot be verified, an error message displays. You must have a valid
certificate to continue.
Note: Application signing does not support *.app.zip application archives. Any .zip files
must be extracted.
22-Jul-2016
668/2016
Advanced Features
This section describes the following advanced features:
Using BeanShell in DevTest (see page 669)
Class Loader Sandbox Example (see page 672)
Generating DDLs (see page 672)
BeanShell lets you declare and then use methods. Arguments and return types can also be loosely
typed:
22-Jul-2016
669/2016
22-Jul-2016
670/2016
For example, if you have a web service call that takes a formatted date string and the server is 2
minutes slow, you can use:
=com.itko.util.DateUtils.formatCurrentDate(-120,"yyyy-MM-dd'T'HH:mm:ss.SSSZ")
This generates the string "2007-11-22T13:30:37.545-0500", the current time minus 120 seconds
formatted according to these guidelines.
RFC 3339 is slightly different from the date that the default Java date formatter generates. If you
need a strict RFC 3339 date, you can use the rcf3339 functions:
=com.itko.util.DateUtils.rfc3339()
671/2016
static\{
System.out.println("Thisismystaticinitializer.Youwillseethismanytimes.");
staticStrings;
publicNeedsASandbox()\{\};
publicvoidsetS(Strings)\{
this.s=s;
publicStringgetS()\{
returns;
Generating DDLs
Setting the following properties in local.properties creates DDLs for reporting and VSE:
eclipselink.ddl-generation=create-tables
eclipselink.ddl-generation.output-mode=sql-script
22-Jul-2016
672/2016
Note: DevTest Portal is a web-based application that is intended to become the primary
user interface for DevTest Solutions. The portal provides capabilities for some of the mostused workflows for DevTest products. Over time, CA will enhance the functionality of the
portal and will eventually sunset the other interfaces in the DevTest product line, including
DevTest Workstation. For a quick summary of the functionality available in the portal, see
DevTest Portal Functionality (see page 74).
Using DevTest Portal with CA Service Virtualization (see page 707) provides detailed information
about using the portal to virtualize service behavior for supported features.
Using DevTest Workstation with CA Service Virtualization (see page 811) provides detailed
information about using DevTest Workstation to virtualize service behavior for features that have not
yet migrated to the portal.
22-Jul-2016
673/2016
Product Configurations
CA Service Virtualization has two product configurations, optimized for specific customer
applications:
CA Service Virtualization
CA Service Virtualization is intended for use cases in development, integration, testing, and user
acceptance. Instances of these products service up to ten parallel transactions simultaneously, or
approximately ten transactions a second.
CA Service Virtualization for Performance
CA Service Virtualization for Performance is specifically for performance testing applications, and
is more scalable, limited only by the underlying hardware and network.
The default configuration is CA Service Virtualization. For information about how to override the
default, see SV Installation and Configuration (see page 674) .
674/2016
22-Jul-2016
675/2016
676/2016
More Information
Install the Database Simulator (see page 677)
DDLs for Major Databases (see page 679)
Note: The JDBC (Driver Based) transport protocol is not supported. This functionality is
replaced by agent-based JDBC virtualization (see page 748).
If this property is already used, add the DevTest driver to the front. Separate the DevTest
driver from the rest of the driver class names with a colon ( : ).
DataSource Style
If the database client uses the DataSource style for acquiring a connection (as the Demo
Server does), then update its configuration. Where the configuration specifies a data
source definition, specify com.itko.lisa.vse.jdbc.driver.Driver as the JDBC driver to use,
and a connection URL.
22-Jul-2016
3.
677/2016
3. To achieve a pass through, modify the connection URL so that the DevTest Simulation JDBC
driver can identify the real driver information. Format the connection URL as follows:
name=value[;name=value...]
name
jdbc:lisasim:driver: The value must be the fully qualified class name of the real JDBC driver
to use.
url: The value must be set to the connection URL that the real driver expects. (It must be
defined as the last property so that it can contain semi-colons.)
Note: VSE does not support the Oracle thin driver as a pass through driver. The
Oracle thin driver does not provide the full JDBC implementation. If you use Oracle
as a database, use other JDBC drivers for virtualization.
To use both the simulation and CA Continuous Application Insight drivers, make the simulation driver
the "outside" driver. Specify the CAI class and URL. See the itko-example-ds.xml file in the
DEMO_HOME\jboss\server\default\deploy folder for an example that defines a DevTest data
source to JBoss for DevTest demo server.
22-Jul-2016
678/2016
Starting DevTest with these properties creates the following files that contain the necessary DDL:
createDDL.jdbc
dropDDL.jdbc
You can generate DDLs for a different DBMS by changing the target-database value.
More Information:
EclipseLink Persistence Unit Properties for Session (see page 679)
EclipseLink Persistence Unit Properties for Schema Generation (see page 682)
679/2016
eclipselink.sessions-xml
Defines the persistence information that is loaded from the EclipseLink session configuration file,
sessions.xml.
You can use this option as an alternative to annotations and deployment XML. If you specify this
property, EclipseLink overrides all class annotation and the object relational mapping from the
persistence.xml, and ORM.xml and other mapping files.
To indicate the session, set the eclipselink.session-name property.
Note: If you do not specify the value for this property, sessions.xml file is not used.
Values: The resource name of the sessions XML file.
Example:
persistence.xmlfile<propertyvalue="mysession.xml"
/>Example:propertyMapimportorg.eclipse.persistence.config.
PersistenceUnitProperties;propertiesMap.put(PersistenceUnitProperties.
SESSIONS_XML,"mysession.xml");
eclipselink.session-event-listener
Defines a descriptor event listener to be added during bootstrapping.
Values: Qualified class name for a class that implements the org.eclipse.persistence.sessions.
SessionEventListener interface.
Example:
Persistence.xmlfile<propertyvalue="mypackage.MyClass.class"
/>Example:propertyMapimportorg.eclipse.persistence.config.
PersistenceUnitProperties;propertiesMap.put(PersistenceUnitProperties.
SESSION_EVENT_LISTENER_CLASS,"mypackage.MyClass.class");
eclipselink.session.include.descriptor.queries
Specifies whether to copy all named queries from the descriptors to the session by default. These
queries include the ones that are defined using EclipseLink API, descriptor amendment methods,
and others.
Values:
true: Enable the default copying of all named queries from the descriptors to the session.
false: Disable the default copying of all named queries from the descriptors to the session.
Default: true.
Example:
Persistence.xmlfile<propertyvalue="false"/>Example:propertyMapimportorg.
eclipse.persistence.config.PersistenceUnitProperties;propertiesMap.put
(PersistenceUnitProperties.INCLUDE_DESCRIPTOR_QUERIES,"false");
22-Jul-2016
680/2016
eclipselink.target-database
Specifies the type of database that your JPA application uses.
Values:
The following values are valid for use in a persistence.xml file and for the org.eclipse.persistence.
config.TargetDatabase:
Attunity: Configure the persistence provider to use an Attunity database.
Auto: EclipseLink accesses the database and uses the metadata that JDBC provides to
determine the target database. This value applies to the JDBC drivers that support this
metadata.
Cloudscape: Configure the persistence provider to use a Cloudscape database.
Database: If your target database is not listed here and your JDBC driver does not support the
use of metadata that the Auto option requires, configure the persistence provider to use a
generic choice.
DB2: Configure the persistence provider to use a DB2 database.
DB2Mainframe: Configure the persistence provider to use a DB2 mainframe database.
DBase: Configure the persistence provider to use a DBase database.
Derby: Configure the persistence provider to use a Derby database.
HSQL: Configure the persistence provider to use an HSQL database.
Informix: Configure the persistence provider to use an Informix database.
JavaDB: Configure the persistence provider to use a Java DB database.
MySQL: Configure the persistence provider to use a MySQL database.
Oracle: Configure the persistence provider to use an Oracle Database.
PointBase: Configure the persistence provider to use a PointBase database.
PostgreSQL: Configure the persistence provider to use a PostgreSQL database.
SQLAnywhere: Configure the persistence provider to use an SQLAnywhere database.
SQLServer: Configure the persistence provider to use an SQLServer database.
Sybase: Configure the persistence provider to use a Sybase database.
TimesTen: Configure the persistence provider to use a TimesTen database. You can also set
the value to the fully qualified classname of a subclass of the org.eclipse.persistence.platform.
DatabasePlatform class.
Default: Auto
Example:
Persistence.xmlfile<propertyvalue="Oracle"/>Example:propertyMapimportorg.
22-Jul-2016
681/2016
eclipselink.target-server
Specifies the type of application server that your JPA application uses.
Values:
The following values are valid for use in the persistence.xml file and the org.eclipse.persistence.
config.TargetServer:
None: Configure the persistence provider to use no application server.
WebLogic: Configure the persistence provider to use Oracle WebLogic Server. This server sets
this property automatically. Set it only if it is disabled.
WebLogic_9: Configure the persistence provider to use Oracle WebLogic Server version 9.
WebLogic_10: Configure the persistence provider to use Oracle WebLogic Server version 10.
OC4J: Configure the persistence provider to use OC4J.
SunAS9: Configure the persistence provider to use Sun Application Server version 9. This
server sets this property automatically. Set it only if it is disabled.
WebSphere: Configure the persistence provider to use WebSphere Application Server.
WebSphere_6_1: Configure the persistence provider to use WebSphere Application Server
version 6.1.
JBoss: Configure the persistence provider to use JBoss Application Server.
The fully qualified class name of a custom server class that implements the org.eclipse.
persistence.platform.ServerPlatform interface.
Default: None
Example:
persistence.xmlfile<propertyvalue="OC4J_10_1_3"/>Example:propertyMapimportorg.
eclipse.persistence.config.TargetServer;importorg.eclipse.persistence.config.
PersistenceUnitProperties;propertiesMap.put(PersistenceUnitProperties.
TARGET_SERVER,TargetServer.OC4J_10_1_3);
682/2016
eclipselink.application-location
Specifies where EclipseLink writes generated DDL files. Files are written if you set eclipselink.ddlgeneration to anything other than none.
Value: A file specification to a directory in which you have write access. The file specification can
be relative to your current working directory or absolute. If it does not end in a file separator,
EclipseLink appends one that is valid for your operating system.
Default: One of the following:
"."+File.separator
or
<tt>PersistenceUnitProperties.DEFAULT_APP_LOCATION</tt>
Example:
persistence.xmlfile<propertyvalue="C:\ddl\"/>Example:propertyMapimportorg.
eclipse.persistence.config.PersistenceUnitProperties;propertiesMap.put
(PersistenceUnitProperties.APP_LOCATION,"C:\ddl\");
eclipselink.create-ddl-jdbc-file-name
Specifies the file name of the DDL file that EclipseLink generates containing SQL statements to
create tables for JPA entities. This file is written to the location specified by eclipselink.
application-location when eclipselink.ddl-generation is set to create-tables or drop-and-createtables.
Values: A file name valid for your operating system. Optionally, if the concatenation of eclipselink.
22-Jul-2016
683/2016
eclipselink.drop-ddl-jdbc-file-name
Specifies the file name of the DDL file that EclipseLink generates containing the SQL statements to
drop tables for JPA entities. This file is written to the location specified by eclipselink.applicationlocation when eclipselink.ddl-generation is set to drop-and-create-tables.
Values: A file name valid for your operating system. Optionally, if the concatenation of eclipselink.
application-location with eclipselink.drop-ddl-jdbc-file-name is a valid file specification for your
operating system, you can prefix the file name with a file path.
Default: One of the following:
dropDDL.jdbc
or
PersistenceUnitProperties.DEFAULT_DROP_JDBC_FILE_NAME
Example:
persistence.xmlfile<propertyvalue="drop.sql"/>Example:propertyMapimportorg.
eclipse.persistence.config.PersistenceUnitProperties;propertiesMap.put
(PersistenceUnitProperties.DROP_JDBC_DDL_FILE,"drop.sql");
eclipselink.ddl-generation.output-mode
Defines the DDL generation target.
Values:
The valid values for the use in the persistence.xml file are:
both:
Generate the SQL files and execute them on the database.
If eclipselink.ddl-generation is set to "create-tables," eclipselink.create-ddl-jdbc-file-name is written
to eclipselink.application-location and then executes on the database.
If eclipselink.ddl-generation is set to "drop-and-create-tables," both eclipselink.create-ddl-jdbc-filename and eclipselink.drop-ddl-jdbc-file-name are written to eclipselink.application-location. Both
SQL files execute on the database.
database:
Execute SQL on the database only (do not generate the SQL files).
sql-script:
22-Jul-2016
684/2016
Note: Override this setting by containers with specific EclipseLink support. See your
container documentation for details. Bootstrap or Java SE mode: both or
PersistenceUnitProperties.DDL_BOTH_GENERATION.
Basic Workflow
The basic workflow consists of the following steps:
1. Gather transactions from sources such as live traffic recording, request/response pairs, and
engineering specifications.
2. Use the transactions to create a virtual service.
3. Deploy the virtual service to a virtual service environment (VSE).
4. Confirm that the virtual service is working correctly.
5. Use the virtual service as a stand-in for the actual service.
22-Jul-2016
685/2016
The Virtual Service Image Recorder creates a virtual service model (VSM) and a service image.
The Service Image Editor and the VSM Editor let you view and edit them.
During virtualization, the VSM and service image load and run on a VSE that runs as a service.
The registry tracks one or more VSEs that are running, and DevTest Workstation uses it to connect to
the VSE.
The DevTest Portal is used to monitor and control the VSMs and service images that are loaded onto
the VSEs.
More Information:
Live Traffic Recording (see page 687)
Request/Response Pairs (see page 690)
Virtual Service Models (see page 692)
Service Images (see page 692)
How Virtualization Works (see page 693)
22-Jul-2016
686/2016
Non-Messaging Systems
The following graphics show that when recording the service image, the virtual service environment
(VSE) acts as the pass through mechanism between the client and server. While the VSE passes the
requests and responses along, it records the transactions.
Normal Operation
Recording
At the time of virtualization, the VSE responds to the client requests by consulting the recorded
transactions.
22-Jul-2016
687/2016
Messaging Systems
Message-oriented middleware (MOM), or messaging systems, are services that provide a means to
enable asynchronous communication between two or more software applications. This
communication always happens in the form of messages. The messages are posted to message
destinations configured in the MOM.
The types of message destinations are:
Queues
A publisher adds a message to the queue, and a subscriber pulls messages from the queue, in a
"first in, first out" fashion.
Topics
A publisher publishes a message to a topic, and all subscribers that subscribe to the topic receive
the message.
The following graphic shows a simple message-based service. In this scenario, the client adds
messages to a queue (ORDERS.REQUEST), which the server picks up. The response from the server is
in the form of messages added to another queue (ORDERS.RESPONSE). The client then picks them
up.
688/2016
Later, when VSE virtualizes the server, it works with the real destinations. VSE does not need the
proxy destinations.
22-Jul-2016
689/2016
Request/Response Pairs
One way to gather transactions for virtual service creation is to provide request/response pairs.
A request/response pair consists of one request file and one or more response files.
Multiple response files are applicable to messaging scenarios.
Naming Conventions (see page 690)
Examples (see page 691)
Sidecar Files (see page 691)
Naming Conventions
The file names in a request/response pair consist of a prefix, a suffix, and a file extension.
<prefix><suffix>.<extension>
The prefix is a unique identifier, such as depositMoney. You must use the same prefix in all the file
names that correspond to a particular transaction.
The suffix of a request file is -req.
The suffix of a response file is -rsp. If you have multiple responses, add a number to the end of each
response suffix.
The file extension can be anything.
The following example has one request and one response:
depositMoney-req.txt
depositMoney-rsp.txt
The following example has one request and three responses:
depositMoney-req.txt
depositMoney-rsp1.txt
depositMoney-rsp2.txt
depositMoney-rsp3.txt
22-Jul-2016
690/2016
Examples
When you create a virtual service from request/response pairs in DevTest Portal, the Help panel
includes examples for the HTTP and JMS protocols.
The Bank v5 and Bank v6 projects in the LISA_HOME\Projects directory include examples for the
HTTP protocol.
Sidecar Files
A sidecar file contains key/value pairs that are added to the metadata of requests, responses, or both
in a virtual service.
When creating a virtual service from request/response pairs, you can specify one or more sidecar
files.
A sidecar file is global or specific:
Global
Applies to all request or response files.
Specific
Applies to an individual request or response file.
The entries in a specific sidecar file take precedence over the entries in a global sidecar file.
A global sidecar file that applies to requests must be named meta-req.properties.
A global sidecar file that applies to responses must be named meta-rsp.properties.
To name a specific sidecar file, add the string -meta to the name of the corresponding request or
response file and change the file extension to .properties.
The following example has three sidecar files. The meta-req.properties and meta-rsp.properties files
are global. The depositMoney-rsp2-meta.properties file is specific.
depositMoney-req.txt
depositMoney-rsp1.txt
depositMoney-rsp2.txt
depositMoney-rsp2-meta.properties
depositMoney-rsp3.txt
meta-req.properties
meta-rsp.properties
The following example shows the key/value pairs that might appear in a sidecar file:
22-Jul-2016
691/2016
Accept-Language=en-US
Content-Type=application/json
Service Images
A service image is a recording of the interaction between the client and server as created by CA
Service Virtualization. A virtual service model references a service image. The service image is used to
deliver the appropriate response to the client in the absence of the server.
Service Image Contents (see page 692)
Imported Transactions (see page 693)
22-Jul-2016
692/2016
For example, if multiple users log in to the system with login() transactions, all these transactions are
merged into a single transaction. But if one user logs in with login() and another user logs in with
acquireAuthToken(), the transactions are not merged.
Imported Transactions
You can import the following XML documents into a service image being recorded:
Raw Transactions
The XML document represents raw traffic as if coming directly from the network, characterized by
a root element of <rawTraffic>.
For an example, see LISA_HOME\examples\VServices\raw-traffic.xml.
Conversational Traffic
The XML document represents traffic that is rearranged into conversations, stateless transaction
sets, or both. The traffic is organized into linear lists of transactions, each of which represent a
"real" conversation and has a root element of <traffic>.
For an example, see LISA_HOME\examples\VServices\traffic.xml.
693/2016
VSE Transactions
In CA Service Virtualization, a transaction is a complete unit of work that a service performs.
A transaction includes the request that the client sends to the service and the one or more responses
that the service sends to the client.
The following graphic shows a transaction that has one request and one response:
Request
The request side of a transaction has the following components:
Operation
An action to be performed.
Arguments
Name/value pairs that are used as input to the operation.
Body
The payload of the request.
Attributes
Name/value pairs that contain information about the request body.
Metadata
Name/value pairs that contain information that is not part of the request body.
Match tolerance
A setting that defines the criteria for matching against an inbound request at runtime.
22-Jul-2016
694/2016
Response
The response side of a transaction has the following components:
Body
The payload of the response.
Metadata
Name/value pairs that contain information that is not part of the response body.
Think time
A setting that indicates how long to wait before sending the response.
Stateless Transactions
Stateless transactions include no logical relationships between transactions. For example, HTTP and
SOAP are stateless protocols. A stateless transaction always has a static response, regardless of what
calls were made previously.
In a stateless conversation, each service call is independent of the others. For example:
What is the current weather in Dallas? (Operation: weather; Argument: city)
What is the current weather in New York? (Operation: weather; Argument: city)
What will the weather be in Dallas tomorrow? (Operation: weather; Argument: city; Argument:
date)
22-Jul-2016
695/2016
Conversational Transactions
Conversational transactions (conversations) are stateful. Conversations consist of:
The logical transaction that, if matched, starts a unique session
The information necessary to create and identify that session
A transaction in a conversation depends on the context that earlier conversations create.
For example, the following conversation involves using an ATM:
1. Connect to the ATM. (Operation: logon)
2. Which account do you want? (Argument: checking)
3. What is my balance? (Operation: balance)
4. Response.
5. Withdraw an amount of money. (Operation: withdrawal)
6. How much? (Argument: amount)
7. What is my balance? (Operation: balance)
8. Response (different based on the amount that was withdrawn in the previous request).
9. End session (Operation: logout)
Conversation Starters
The first transaction in a conversation is the conversation starter. When a virtual service environment
(VSE) receives an incoming request, the VSE reviews the conversation starters to determine whether
the transaction means a new conversation is starting.
Because all the transactions in a conversation are related to each other, the VSE must have a way of
determining this relationship. This determination is typically made by using some kind of special
token such as "jsessionid" or a cookie in web transactions, or a custom identifier in message traffic.
The following types of conversations are supported:
Instance-based conversations
The protocol layer is responsible for identifying the unique string, which is based on different
instances of the client. The string identifies server-side sessions for both recording and playback
of the service image.
Token-based conversations
The VSE generates the token by using a string generation pattern that is stored with the
conversation in the service image. After the token is generated, it operates the same as an
instance-based conversation. Token-based conversations cannot be automatically inferred during
recording. To specify where tokens are found, use the VS Image Recorder (see page 965).
22-Jul-2016
696/2016
Navigation Tolerance
The navigation tolerance levels are:
Close
The children of the current transaction are searched.
Wide
A close search, including the current transaction plus siblings and nieces/nephews of the current
transactions.
Loose
A wide search, plus the parent and siblings of the current transaction, followed by the children of
the starting transaction. If both fail to find a match, then the starting transactions for all
conversations are checked, resulting in searching the full conversation.
The following graphic shows how the navigation tolerance affects the transactions to be searched in a
conversation tree. A check mark marks the current transaction.
22-Jul-2016
697/2016
At the time of recording, the VSE recorder allows for initializing the navigation tolerance on
transactions the following settings:
Default navigation
Defines the default tolerance on all Meta transactions that have child Meta transactions.
Default: Wide
Last
Defines the default tolerance for Meta transactions that are "leaf" transactions without any child
Meta transactions.
Default: Loose
You can change these parameters later for each node through the Service Image Editor in DevTest
Workstation.
The defaults provide a better match on "right" behavior. VSE responds correctly more often in
situations when current run-time sessions restart a conversation without the need to start a new
conversation.
22-Jul-2016
698/2016
Navigation Tolerance
In a conversation, the virtual service environment (VSE) follows specific rules to determine how to
find the next conversational transaction. The sets of rules, also known as navigation tolerances, are:
Close
The transactions must go straight down the tree. The only candidates for the next conversational
transaction are the children of the current one.
Wide
Wide tolerance allows navigation to the current transaction, the children of the current
transaction, the siblings of the current transaction, and the immediate descendants of the sibling
(or "nephews"). The order of precedence is as follows:
1.
2.
Children of a sibling
3.
Loose
The most permissive navigation tolerance. The VSE first tries the Close and Wide tolerances, then
adds the ability to match the parent of the current transaction, any of the siblings of the parent
("uncles"), the children of the siblings of the parent ("cousins"). If this match fails, navigation is
permitted to any transaction in the second or third level of the tree. The order of precedence is as
follows:
22-Jul-2016
1.
2.
3.
4.
The siblings of the parent transaction ("uncles") but not their children (not cousins)
5.
6.
The children of the starter transaction for the current conversation (the immediate children
of the root of the tree)
7.
The starter transactions for all the conversations in the service image
Logical Transactions
A logical transaction appears as a single node in a conversation. A logical transaction consists of one
Meta transaction with one or more specific transactions.
When a logical transaction appears in the search for a specific request, the Meta transaction is
consulted. The Meta transaction determines if this transaction can respond to the request. If the
Meta transaction responds to the request, all the specific transactions are asked if they can respond
to the request. If none of the specific transactions can respond to the request, the response is taken
from the Meta transaction.
This logic can be expressed in the following pseudo code:
foreachlogicaltransaction {
if(metatransactionrequestmatchesthegivenrequest) {
//Thisnodewouldhandletherequestforeachspecifictransactioninthisnode {
if(specifictransactionmatchesthegivenrequest) {
return responsefromthespecifictransaction
}
}
//Nospecifictransactionfoundforthegivenrequest
return responsefromthemetatransaction
}
Further, a physical Meta transaction carries a list of specific transactions and a list of child Meta
transactions. The list of child Meta transactions allows Meta transactions to be structured as a
decision tree.
Match Tolerance
Match tolerance defines how the virtual service environment (VSE) decides whether a specific
transaction matches the incoming transaction.
Argument Match Operators (see page 701)
Meta Transactions and Specific Responses (see page 702)
How the VSE Selects the Next Response (see page 702)
How to Debug Match Failures (see page 702)
The levels of match tolerance are:
22-Jul-2016
700/2016
Operation
The loosest match tolerance. The operation name of the incoming transaction must match the
name of the recorded transaction.
Signature
The operation name must match and the names of the arguments must match exactly, with no
additions or deletions. The order of arguments does not have to be the same.
Exact
In addition to the signature match, the values for each argument must match the values that
were recorded, as defined by the argument match operators.
22-Jul-2016
701/2016
Property Expression
The value must be in the form of a double-braced script expression, {{ }}. This property or
expression is evaluated. If the result starts with Y, y, T, t, or ON, then the argument is deemed to
have matched. The argument value in the inbound request is ignored unless referenced in the
script.
Note: If an argument is marked as a date, the values from the requests being compared are
converted to a date before the comparison is done.
22-Jul-2016
702/2016
Set the log4j.logger.VSE property to INFO or WARN for production use. Do not leave it set to DEBUG
or TRACE longer than necessary.
Magic Strings
During the recording phase, VSE examines each request for arguments or parameters. For example, a
weather forecasting web service call could include a city name or an airline booking system request
could include a flight number. If the flight number is included in the recorded response, it is classified
as a magic string.
For example, if VSE is in playback mode and a request comes in for a flight number that was never
recorded, the correct flight number is included in the response.
In the following example, we recorded a request to set some "state" in the conversation, in this case
the flight number (ABC53). The recorder recognized that the string ABC53 was also in the response,
so it converted ABC53 to a magic string. The magic string is saved in the service image database as
'=request_arg1;/ABC53/.
The {{ }} notation is a standard VSE property substitution syntax. This notation means "substitute the
{{ }} text with the runtime value of the first argument of the request." If there is no first argument,
use ABC53 as the default.
22-Jul-2016
703/2016
The practical significance is that if a future client requests flight ZZ99, the virtualized service responds
with the correct flight number, ZZ99.
VSE detects magic strings not only in a simple request/response pair. If an argument is ever seen in
any subsequent response in a conversation, VSE deems it to be magic and stores the argument value
in the conversation state.
By default, VSE does not consider anything in an XML tag for magic strings. This exclusion includes
XML tags, attribute names, and attribute values. You can change this behavior by setting lisa.magic.
string.xml.tags=true in the local.properties file, in which case normal magic string rules apply.
In other words, if you have <foo bar="baz"/>, none of that is considered for magic strings. By
contrast, if the structure is <foo>bar</foo>, then "bar" (but not "foo") is considered for magic strings.
The following example is later in the previous conversation. The request operation is "itko_seat" and
the single argument is a name, in this case "Person1". The response contains the name in the
request, the previously set flight number and a date.
This is the canonical example of conversational state over a stateless protocol, in this case SOAP over
HTTP. If the VSE in playback mode sees a request to set the flight to ZZ99 and then a request to seat
PersonSomeoneElse, then the correct string, "Seated PersonSomeoneElse on seat 1 of flight ZZ99" is
included in the response, even though those details were never recorded.
VSE does not regard the seat number, 1 in this case, as a magic string. The seat number was never
seen in the original series of requests that led to this response. Nor is it large enough to be regarded
as a magic string. A magic string must be at least three characters long and optionally have
whitespace on the left, right, or both sides of the string. You can adjust the length and whitespace
parameters in the local.properties file.
22-Jul-2016
704/2016
The {{ }} property notation is powerful and flexible and is not confined to using magic strings. For
example, we could change the "1" in the response in the example to "DataSetValue" and could define
a data set in the virtual service model. Then that data set is used to generate the runtime response
value. The data set could be a random string generator, a counter, a call to a database, a reference to
an Excel spreadsheet row, or anything. }} can execute arbitrary Java code and even generate realistic
"everyday" data such as a valid credit card number {{=[:Credit Card:].
More Information:
Using BeanShell in DevTest (see page 669)
Response
<GetUserResponse>
<userId>lisaitko</userId>
<isActive>true</isActive>
<isEmailVerified>true</isEmailVerified>
</GetUserResponse>
The two "true" values in the response have nothing to do with each other, or with the value in the
request. In real world scenarios, the number of unwanted "magic strings" that is generated is much
greater. One way to avoid this issue is to find and replace these magic strings manually after the
service image is recorded.
An easier way, however, is to set the lisa.magic.string.exclusion property in lisa.properties.
This property lets you specify values that are not candidates for magic string identification. DevTest
does not try to correlate these values in the response to values in the request during recording. If
necessary, you can still manually edit the service image to add magic strings.
22-Jul-2016
705/2016
Magic Dates
A powerful date parser scans requests and responses are also scanned during recording. Anything
matching a wide definition of date formats is recognized and translated to a magic date. In the
example that is shown in Magic Strings (see page 703), the magic date is:
{{=doDateDeltaFromCurrent("yyyy-MM-dd","0D");/2008-12-17}}
The 10D in the magic string means that the VSE generates a date in the response that is 10 days
ahead of the current time. Therefore, if the VSE is in playback mode on 12 June 2010, the response
contains the string 2010-06-22.
The valid parameters for date deltas are:
D: Days
H: Hours
M: Minutes
S: Seconds
22-Jul-2016
706/2016
Use the doDateDeltaFromRequest variant when a date is used as a parameter in the request and a
date is seen in the response. For example, an airline reservation system could accept a seating
request for a specific flight on a specific day. If that date is seen in the response, the VSE correctly
substitutes the date in any subsequent responses.
A more sophisticated example is if the flight request generated a response that detailed a flight
crossing the International Date Line. A flight from Los Angeles to Sydney arrives two days later than
the departure according to the calendar date even though the flight time is 14 hours. In this example,
the response contains something like:
doDateDeltaFromRequest("yy-MM-dd","2D")
If VSE processed a similar request for a flight departing LAX on 19-June-2013, it includes the correct
arrival date of 21-June-2013 in the response.
Note: You can add any valid date and time formats, including the ones that have zones, to
lisa.properties for magic date calculations.
Track Transactions
In VSE, you can track the transactions that are done through the ITR facility.
When using a virtual service in the ITR, set the execution mode in the configuration file that the
project uses.
Follow these steps:
1. Select Actions, View tracked responses from the ITR run.
2. To track transactions of a specific virtual service, set the execution mode in the active
configuration file by setting the lisa.vse.execution.mode property to TRACK.
A new window in the editor lists the tracked transactions.
22-Jul-2016
707/2016
Note: For information about the server components that must be running, see Start the
DevTest Processes or Services (see page 145).
One possible error message indicates that the user cannot be authenticated and that you should
make sure the registry service is running. If you receive this message and the registry service is
running, the cause might be a slow network. Analyze your network for impaired performance.
Follow these steps:
1. Complete one of the following actions:
Open a supported browser and enter http://localhost:1507/devtest.
If the registry is on a remote computer, replace localhost with the name or IP address of
the remote computer.
If the port number was changed from the default value 1507, use the new port number.
Select View, DevTest Portal from DevTest Workstation.
2. Enter your user name and password.
3. Click Log in.
708/2016
More Information:
Create Virtual Services by Recording (see page 709)
Create Virtual Services from Request/Response Pairs (see page 728)
Edit Virtual Services (see page 762)
Deploy Virtual Services (see page 782)
Monitor Virtual Services (see page 784)
Video about recording and editing virtual services in CA Service Virtualization 8.0 (
https://www.youtube.com/watch?v=0nx6EKOxtyM&index=7&list=PLUo54tntpYJmxYRsnMkYSWPTdQ-vrKd8)
709/2016
Preview Feature
This release includes a preview feature that provides a unified interface for creating virtual services.
For information about how to enable this feature, see Preview Features (see page 70).
You can suspend work on creating a virtual service and then resume later. The upper right area of the
initial screen indicates the number of virtual services that are in progress. To display the virtual
services, click Show List. To resume creation, click the Edit icon in the Actions column or click the
virtual service name. To remove a virtual service from the list, click the Delete icon in the Actions
column. To return to the initial screen, click Hide List.
Follow these steps:
1. In DevTest Portal, click Create, Virtual Service.
2. Provide basic information about the virtual service:
a. Select the VSE server.
b. Enter a name for the virtual service.
c. (Optional) Enter a description of the virtual service.
d. Select the transport protocol.
3. Click Continue.
4. To display a list of previously saved recording configurations, click List. You can sort the
recordings by name, protocol, or status. You can also delete a recording.
5. Configure the transport protocol and record the traffic by performing the steps in the
appropriate page:
Virtualize Services by Recording (HTTP or HTTP/S) (see page 711)
Virtualize Services by Recording (TCP) (see page 713)
22-Jul-2016
710/2016
5.
The graphic for the recording changes color as the components are validated. In the preceding
graphic, the VS Recorder and the server are colored, indicating that they have been validated.
When all the mandatory information that is required for recording is entered, the status of the
recording changes from "Draft" to "Ready". The status shows on the blue Status button. To get more
details for the recording, click Status.
Follow these steps:
1. CA Service Virtualization chooses a default host for the VS Recorder. To change the name or IP
address of this host where the recorder is running, select another IP address from the dropdown. If there are multiple host IP addresses and you want to record on all those IP
addresses, "All" is provided as the first option in the drop-down and is selected by default.
2. To enter or change the port for the VS Recorder, click the lock icon to enable the field for
input. Enter a port number that the recorder uses as a listen port of incoming requests.
22-Jul-2016
3.
711/2016
3. To specify the website to record, enter the URL in the Enter Target URL field. The following
formats are accepted:
<ip>:<port>
<hostname>:<port>
<server>.<domain>
As you type the URL, the virtual service environment (VSE) validates the format. Once the field
is fully typed and you tab out or enter, the VSE calls the target server to ensure that the server
is reachable.
4. (Optional) Select or clear the Do not modify host header parameter received from client
check box.
If selected, this option instructs the live invocation to forward the host header that is received
from the client application to the target server. If cleared, the live invocation regenerates the
host header parameter to be host: <target host>:<target port>.
5. (Optional) Select or clear the De-identify transactions check box.
This check box specifies whether to try to recognize sensitive data and substitute random
values during the recording. For more information, see De-identifying Data (see page 1021).
This option is available in advanced mode.
6. (Optional) Select or clear the Treat all transactions as stateless check box.
This check box specifies whether to treat all recorded transactions as stateless. Usually, leave
this option cleared. This option is available in advanced mode.
7. Choose one of the following options:
To record without using SSL, leave the Use SSL check boxes cleared.
To record using SSL, select one or both of the Use SSL check boxes. The Use SSL check box
on the left lets you enter information about the SSL certificate to send to the client. The
Use SSL check box on the right lets you enter information about the SSL certificate to send
to the server.
8. (Optional) If you select one or both Use SSL check boxes, complete the following fields:
SSL Keystore File
Specifies the name of the keystore file.
To find a keystore file on the file system, click Browse. Keystore files must be in PKCS12 or
JKS format.
SSL Keystore Password
Specifies the password that is associated with the specified keystore file.
SSL Key Alias
Designates an alias for a public key. If there is more than one key in the file, the key alias
specifies which key in the file to use.
22-Jul-2016
712/2016
713/2016
22-Jul-2016
714/2016
Virtualize TCP
The TCP transport protocol lets you virtualize raw TCP/IP traffic between one or more clients and a
server. This transport resembles the HTTP protocol, and uses many of the same features.
During recording, you configure the TCP protocol exactly as you would configure HTTP in Endpoint
22-Jul-2016
715/2016
22-Jul-2016
716/2016
Creating Conversations
By default, it records TCP service images, VSE creates conversations based on your machine name (or
IP address) and the outbound socket. Any time your outbound socket changes, a new conversation is
started. To change this behavior, select the Treat all conversations as stateless check box.
Out-of-the-Box Delimiters
DevTest has the following delimiters:
None
Records are terminated with line endings
One or more newline characters terminates each request/response. The delimiter itself is not
included in the request/response.
Values:
\n
\r
Unicode characters 0085, 2028, and 2029
Records are of fixed length
Each request/response is a specific number of bytes in length.
Records are equal to the whole data package
The response is read until end-of-data is encountered. The entire content received is treated as
the response.
Records are delimited by specific characters
A specific character or sequence of characters, such as a comma, terminates each request
/response. The entire sequence must be matched. The delimiter itself is not included in the
request/response. This option is similar to importing a CSV file.
Delimiters match a regular expression
A set of bytes that matches the regular expression terminates each request/response. The
delimiter itself is not included in the request/response.
Regular expression matches the record (includes delimiter)
The characters in the response that match the regular expression are included in the response.
Characters that do not match the expression are ignored.
SWIFT
This is an industry standard protocol used for financial messages.
If the delimiter characters are not included in the request/response (as usually), back-to-back sets of
delimiters are ignored.
If you do not specify a delimiter when recording, the recorder attempts to determine the delimiter.
22-Jul-2016
717/2016
22-Jul-2016
718/2016
The ODP matching and response algorithm has been shown to work on both binary and textual
message protocols. The best results have been obtained with protocols that use fixed width fields
(such as IMS) or delimited fields (such as XML-based protocols). Reasonable accuracy has also been
obtained with length-encoded protocol formats (for example, ASN.1), but these formats pose the
greatest challenge.
ODP is supported for traffic that can be captured using raw TCP/IP sockets.
When all the mandatory information that is required for recording is entered. the status of the
recording changes from "Draft" to "Ready". The status shows on the blue Status button. To get more
details for the recording, click Status.
Follow these steps:
1. Provide basic information about the virtual service, as described in Create Virtual Services by
Recording (see page 709).
2. CA Service Virtualization chooses a default host for the VS Recorder. To change the name or IP
address of the host where the recorder is running, select another IP address from the dropdown. If there are multiple host IP addresses and you want to record on all those IP
addresses, "All" is provided as the first option in the drop-down and is selected by default.
3. To enter or change the port for the VS Recorder, click the lock icon to enable the field for
input. Enter a port number that the recorder uses as a listen port of incoming requests.
22-Jul-2016
719/2016
4. Enter the name or IP address of the target host where the server runs in the Target host field.
5. Enter the port number of the target host in the Port field.
6. Choose one of the following options:
To record without using SSL, leave the Use SSL check boxes cleared.
To record using SSL, select one or both of the Use SSL check boxes. TCP recording uses the
same SSL certificate for the client and server.
7. (Optional) If you select one or both Use SSL check boxes, complete the following fields:
SSL Keystore File
Specifies the name of the keystore file.
To find a keystore file on the file system, click Browse. Keystore files must be in PKCS12 or
JKS format.
SSL Keystore Password
Specifies the password that is associated with the specified keystore file.
SSL Key Alias
Designates an alias for a public key. If there is more than one key in the file, the key alias
specifies which key in the file to use.
SSL Key Password
Specifies the password that is associated with the specified alias in the keystore file.
8. (Optional) To validate the SSL parameters, click Validate. As you enter data into the SSL fields,
the system performs progressive validation.
9. Select a Profile Type. The default selection is Fixed Width Binary. Options are:
Fixed Width Binary
Binary messages with fields of a fixed length. Examples: CICS, IMS.
Length Encoded Binary
Binary messages where fields are variable length. Examples: ASN.1, LDAP.
Text
Message structure is textual, fields are variable length. Examples: SOAP, JSON.
Custom
Selectable only in advanced mode.
10. Select or clear the following check boxes. For more information, see Virtualize TCP (see page
715).
22-Jul-2016
720/2016
22-Jul-2016
721/2016
722/2016
Advanced Mode:
Estimated Number of Clusters
This commonly is parallel to an estimated number of operations we are recording. For optimum
results, the default is set to 10.
22-Jul-2016
723/2016
724/2016
7. To select the program type, use the Type list to select the program type.
LINK indicates recording a CICS LINK command.
DTP indicates recording CICS Distributed Transaction Processing commands (ALLOCATE, SEND,
RECEIVE, and more).
8. Enter the program Name of one to eight characters, with no spaces.
9. From the Region list, select a CICS region in which the recording will take place from the list of
connected CICS regions, or ANY REGION to record on all connected CICS regions.
10. Select an LPAR from the list.
11. (Optional) Enter filters for the program type.
For LINK programs:
User ID is the CICS user ID that the CICS transaction is run under. Only CICS transactions with
this user ID are recorded.
System ID is the CICS SYSID argument that is specified on a Distributed Program LINK. Only
CICS LINKs with this SYSID are recorded.
Transaction ID is the CICS TRANID argument that is specified on a Distributed Program LINK.
Only CICS LINKs with this TRANID are recorded.
EIB Transaction ID is the CICS transaction ID of the CICS transaction in which the CICS LINK is
22-Jul-2016
725/2016
22-Jul-2016
726/2016
The programs listed on this pane are the programs that are defined in the CICS Program Table (PPT)
on each CICS region. CICS does not absolutely require all programs to be defined, so to virtualize a
program that is not defined, you must enter it manually.
To record:
1. Click Start Recording.
2. Run the programs to record.
3. Click Stop Recording.
4. Click Next.
To configure data protocols:
1. From the Request/Response Data Protocol pane, if you require copybook processing, select
the CICS Copybook Data Protocol and click the >> button to add it to the selected protocols.
2. For both the request and response, select a Copybook Bundle (see page 794). If you do not
have any Copybook Bundles defined in the project, you are given the opportunity to create
one. The Configuration Details are taken from the copybook bundle, and you may override
them on the Configuration Details pane.
22-Jul-2016
727/2016
728/2016
Note: If you deploy a virtual service that has the same name as a virtual service that is
already deployed in the VSE server, the existing virtual service is overwritten.
Note: We do not support editing the service image after importing from request/response
pairs.
Preview Feature
This release includes a preview feature that provides a unified interface for creating virtual services.
For information about how to enable this feature, see Preview Features (see page 70).
The request/response pairs can be in the root of the zip file or in a subdirectory. The zip file can
contain nested zip files.
If the request/response pairs that you upload include duplicate file names, only the first duplicate file
is processed. The other duplicate files are ignored.
22-Jul-2016
729/2016
You can suspend work on creating a virtual service and then resume at a later time. The upper right
area of the initial screen indicates the number of virtual services that are in progress. To display the
virtual services, click Show List. To resume creation, click the Edit icon in the Actions column or click
the virtual service name. To remove a virtual service from the list, click the Delete icon in the Actions
column. To return to the initial screen, click Hide List.
Follow these steps:
1. In DevTest Portal, click Create, Virtual Service.
2. Click RR Pairs.
3. Provide basic information about the virtual service:
a. Select the VSE server.
b. Enter a name for the virtual service.
c. (Optional) Enter a description of the virtual service.
d. Select the transport protocol.
4. Do one or both of the following actions:
a. Upload one or more request/response pairs.
b. Upload a zip file that contains one or more request/response pairs.
5. Click Continue.
6. View and edit (see page 730) transactions.
7. (Optional) Select (see page 732) one or more data protocols.
8. If you selected at least one data protocol, configure (see page 733) each one.
9. Save (see page 736) the virtual service.
Note: This procedure is specific to the preview feature that provides a unified interface for
creating virtual services. For information about how to enable this feature, see Preview
Features (see page 70).
730/2016
Note: The Collect Transactions pane lets you add a request that does not have a
corresponding response. However, clicking Next will result in an error message. Be sure to
add a complete request/response pair.
22-Jul-2016
3.
731/2016
3. To delete a transaction, select the transaction and click the Delete icon. You can use the Ctrl
key to select multiple transactions.
4. To edit the request body, make the changes in the Request area.
5. To edit the response body, make the changes in the Response area.
6. To add a request/response pair, click Browse and select the files.
7. Click Next.
Note: The Configure pane also appears in the preview feature (see page 70) for creating
virtual services from request/response pairs.
The following graphic shows the main portion of the Configure pane.
The area on the left lists the available and selected data protocols for the request side.
The area on the right lists the available and selected data protocols for the response side.
Data protocols that were auto-detected show in the selected lists. All data protocols available for the
request and response are displayed.
22-Jul-2016
732/2016
1. To add a data protocol, select it in the Available Data Protocols column and click the
icon. You can add multiple data protocols at the same time.
2. To move a selected data protocol up or down, use the icons to the right of the data protocol.
3. To remove a data protocol, select it in the Selected Data Protocols column and click the
icon. You can remove multiple data protocols at the same time.
4. Click Next.
Configure DPHs
By default, the selected data protocols appear on the left. A dashed line separates the request data
protocols and the response data protocols.
22-Jul-2016
733/2016
A green check mark indicates that one of the following items is true:
The data protocol does not need configuration.
The data protocol has been configured and saved.
Data protocols that can be or must be configured display their editors when they are selected.
When the editor is opened, a default configuration is displayed. You can make changes to the
configuration, or you can accept the default.
To save the configuration, click Save.
To save the configuration and move to the next configurable data protocol, click Save and Next.
If the data protocol does not need configuration, click Next.
View Transactions
If you select View Transactions, the transactions appear on the left. Sliders at the top let you select
request data protocols and response data protocols. The request and response data for each
transaction is also displayed.
22-Jul-2016
734/2016
You can dynamically apply one or more data protocols by moving a slider. The slider on the left
displays request data protocols. The slider on the right displays response data protocols. Selecting
Raw Data indicates not to apply any request or response data protocols.
As you move the slider, the transactions automatically update to reflect the desired applied data
protocols. Moving the slider does not permanently change the transactions; it just gives a preview of
what they would look like if that data protocol were applied.
Assume that you have the XML, JSON, and REST data protocols. If you move the slider to the XML
data protocol, only the XML data protocol is applied. If you move the slider to the JSON data
protocol, the XML and JSON data protocols are applied. If you move the slider to the REST data
protocol, all three of the data protocols are applied.
Clicking the Compare Request Data and Compare Response Data buttons displays a pop-up window
that lets you compare transactions side-by-side with data protocol sliders over each side. The sliders
work the same way as they do on the View Transactions screen. If you compare requests, both sides
of the pop-up show request data and both sides show request data protocol sliders. Comparing
requests lets you dynamically apply or unapply data protocols and see the effects on the
transactions. This display does not permanently change the transactions; it is meant as a preview.
Transactions display on the right side of the pane, with request and response data. When you click
Update Transaction View, the system applies those data protocols to the recorded transactions. The
data protocols, when applied to a transaction, parse requests and responses differently, depending
on the protocol. For more information, see Using Data Protocols (see page 916).
The updated transactions, with parsed requests and responses, are retrieved from the virtual service
environment (VSE) server and shown in the "preview" Transactions pane on the right of the Configure
pane.
The Body tab under Response Data has the following options:
22-Jul-2016
735/2016
Maximize
Maximize the tab for easier viewing.
View All
To display both the Configure DPHs information and the View Transactions information, click View
All.
Common Fields
For each option, complete the following fields:
Select Project
Determines the project where the virtual service is stored. Select a project from the drop-down
list. Projects that are listed in the drop-down are projects that exist in the Projects directory,
Allow duplicate specific transactions
Specifies whether to record duplicate specific transactions.
Default: Cleared
This option is not supported for all protocols.
Create baseline tests
22-Jul-2016
736/2016
Specifies whether to create a baseline test from the virtual service. Baselines are saved to the
same project as the virtual service, in a Baselines folder. The folder is named with the recording
name and a timestamp. In the baseline folder, there is a Tests folder that contains each baseline
test. There is a baseline test for each stateless transaction. For each stateful transaction, there is
one baseline test for each conversation thread.
Baseline creation is not supported for all protocols.
The AllTestsSuite in the Baselines\baseline-instance\Tests\Suites folder is automatically
configured to execute all the tests of the given baseline instance.
For more information about baselines, see Creating Baselines (see page 1151). For more
information about the properties to configure baseline creation, see Local Properties File (see
page 1750).
22-Jul-2016
737/2016
Deployment-Specific Fields
These fields are specific to the Save & Deploy Virtual Service option:
Group Tag
Specifies the name of the virtual service group for this virtual service. If deployed virtual services
have group tags, they are available in the drop-down list. A group tag must start with an
alphanumeric character and can contain alphanumeric characters and the following special
characters:
period (.)
dash (-)
underscore (_)
dollar sign ($)
Concurrent capacity
Specifies a number that indicates the load capacity. Capacity is how many virtual users (instances)
can simultaneously execute with the VSM. Capacity here indicates how many threads there are to
service requests for this service model.
Note: The Concurrent capacity field appears only in CA Service Virtualization for
Performance mode.
VSE allocates some threads equivalent to the total concurrent capacity. Each thread consumes
some system resources, even when dormant. Therefore, for optimal overall system performance,
set this setting as low as possible. Determine the correct settings empirically by adjusting them
until you achieve the desired performance, or until increasing it further yields no performance
improvement.
Out of the box protocols use a framework-level task execution service to minimize thread usage.
For these protocols, a concurrent capacity of more than 2-3 per core is rarely useful, unless the
VSM has been highly customized.
For extensions and any VSM that does not use an out of the box protocol, setting a long Think
Time may consume a thread during the think time. In these cases, you can increase the
concurrent capacity.
The following formula gives an approximate initial setting in these cases:
ConcurrentCapacity=(Desiredtransactionspersecond
/1000)*AverageThinkTimeinms*(ThinkScale/100)
22-Jul-2016
738/2016
Example:
Assume that you are using a custom protocol that does not use the framework task execution
service to handle think times. You want an overall throughput of 100 transactions per second. The
average think time across the service image is 200 ms, and the virtual service is deployed with a
100 percent think scale.
(100Transactionspersecond/1000)*200ms*(100/100)=20
In this case, each thread blocks for an average of approximately 200 ms before responding, and
during that time is unable to handle new requests. We therefore need a capacity of 20 to
accommodate 100 transactions per second. A thread would become available, on average, every
10 ms, which would be sufficient to achieve 100 transactions per second.
Default: 1
Think time scale
Specifies the think time percentage for the recorded think time.
Note: A step subtracts its own processing time from the think time to have consistent pacing of
test executions.
Default: 100
Examples:
To double the think time, use 200.
To halve the think time, use 50.
6.
22-Jul-2016
739/2016
7. If you want to ignore any name conflicts, select the Force to merge conflicted files check box.
8. Do one of the following actions:
Drag the export file into the main area of the dialog.
Click in the main area of the dialog and select the export file.
9. Click OK.
22-Jul-2016
740/2016
For each row, the matching logic examines the values from left to right.
Tip: You can help optimize performance by placing the identifying data in the leftmost
column or columns.
22-Jul-2016
741/2016
Note: The editor also supports converting a data-driven signature to be not data driven.
You might want to perform this action if the data set that is being used to drive the datadriven signature is no longer valid or available. Click the Configure Data Driven icon, move
the Data Driven Behavior slider to the left, and click Done.
742/2016
You cannot specify a comparison operator (see page 775). The only supported operator is the equal
sign (=).
Follow these steps:
1. If you added a blank data-driven signature, click the Add Argument icon in the Request Data
pane.
2. To change an argument name, click the value in the Name column and enter the new name.
22-Jul-2016
743/2016
3. To change a column name, click the value in the Mapping column and select the new column
name.
4. Repeat the preceding steps to create more arguments.
5. (Optional) Move the rows up or down. You can also delete rows.
Note: If you deploy a data-driven virtual service and then update the data set, the changes
take effect when you redeploy the virtual service.
22-Jul-2016
744/2016
The Model Archive (MAR) file for the virtual service includes the data set.
Follow these steps:
1. Select the Data Sets link.
2. To update a data set:
a. Click the Edit icon.
b. Drag or select the updated backing file.
c. Click Update.
3. To download a data set:
a. Click the Options icon.
b. Select Download Data Set.
22-Jul-2016
745/2016
You can use the test-data-driven-http-rest test case in the project to invoke the service. The test case
makes three REST calls for rows that are in the data set. The test case then makes a REST call for a
row that is not in the data set. The last call verifies that the result contains the string 404 Not Found.
Note: To review the test steps in the test case, go to DevTest Workstation and open the
test case.
22-Jul-2016
746/2016
747/2016
Note: JDBC is a chatty protocol. For example, a few clicks in a user interface that retrieves
data from a database can result in a huge number of JDBC API calls. This behavior can make
it difficult to model properly. If you want to capture and virtualize JDBC database traffic,
consider doing so at a higher layer.
748/2016
Important! During the playback phase, start the virtual service before you start the system
under test.
Note: For information about installing the agent, see DevTest Java Agent (see page 1313).
For information about deploying the virtual service, see Deploy Virtual Services (see page
782).
Note: If you stop a recording and then start a new recording, any queries from the earlier
recording are discarded.
22-Jul-2016
749/2016
22-Jul-2016
750/2016
You can display a miniature view of the overall structure in the upper right corner. This capability is
especially helpful for large conversations.
Follow these steps:
1. In the drop-down list, select Conversation View.
2. To display a miniature view of the overall structure, click Show Outline.
3. To display detailed information about a query in the conversation, click the node.
The arguments can include the list of columns, each major clause of the SQL statement, and
parameter values that are bound to the SQL statement. The last two arguments are always the
connection URL and the database user.
The following graphic shows a transaction in DevTest Workstation. The operation is SELECT FROM
TRANSACTIONS. The first argument contains the list of columns. The SQL statement has one
parameter value: the account ID.
22-Jul-2016
751/2016
Each transaction in the service image also has an XML document that contains the results of
executing the SQL statement. The XML document is located in the Response panel of the Service
Image Editor in DevTest Workstation.
The results depend on the type of SQL statement:
If the SQL statement retrieved data, the results contain one or more data sets.
If the SQL statement updated data, the results contain update counts.
Results Panel
The Results panel can contain any number of result sets and any number of update counts. For
example, the following contents are all valid:
One result set
One update count
One result set and one update count
Three result sets
The following graphic shows an example of a result set.
22-Jul-2016
752/2016
753/2016
Important! Do not delete any of the rows. If you delete a row, the system under test will
not work correctly.
The following graphic shows the Protocol Configuration dialog. This example is based on the Apache
Derby database.
22-Jul-2016
754/2016
The url_pattern key specifies the connection URL that triggers virtualization at playback. If the value
ends with a semicolon followed by the text user= and a database user, the virtualization is restricted
to that database user. You can add key/value pairs for additional database users. The key for each
user must begin with url_pattern_.
The second key is composed of the driver class name and the connect method. The value is the name
of the connection class.
The third key is composed of the connection class name and the prepareStatement method. The
value is the name of the prepared statement class.
Notice how the second and third keys create a "chain" of driver to connection to statement.
The keys that begin with java.sql.DatabaseMetaData contain name and version information for:
The database driver
The database that it was talking to when the SQL traffic was captured
The keys at the bottom contain a mapping of a specific SQL statement and the parameter metadata
that the statement represents.
Match Exceptions
The Throw exceptions on no match property lets you control what happens when the virtual service
model does not have an answer for a SQL statement. By default, the property is enabled.
22-Jul-2016
755/2016
If the property is enabled, the agent throws a SQL exception noting the SQL statement that failed
to be virtualized. The exception also suggests that you capture more JDBC frames and add them
to the service image. This action involves generating new virtualization artifacts and using the
service image combine function in either DevTest Workstation or the ServiceImageManager
command-line tool.
If the property is disabled, the agent provides appropriate empty results with a best guess as to
column definitions.
You can configure this property from the Agents window (see page 1046) of the DevTest Portal. The
property appears in the Settings tab.
Synthetic Parents
Certain scenarios can cause CAI to generate a JDBC transaction frame that does not have a parent
transaction frame. For example, a startup process might invoke a JDBC call and then exit without
doing anything else.
A synthetic parent is a parent transaction frame that an agent creates for any transaction frame that
does not have a parent.
When a synthetic parent appears in the DevTest Portal, the name is SYNTHETIC ROOT and the
category is Synthetic Root.
The following graphic shows a synthetic parent and a JDBC frame in the DevTest Portal.
To allow the agent to create synthetic parents, go to the Settings tab of the Agents window and
enable the Attach Synthetic Parent property. The property is located in the Transactions category.
A related scenario occurs when CAI does not generate a JDBC frame because a parent frame is not
available. For example, the Java class that makes the JDBC call is not intercepted. When you enable
the Attach Synthetic Parent property, the agent internally intercepts the Java class and creates both
the synthetic parent and the JDBC frame.
If you enable the property by default, the agent might capture unwanted transactions and cause
performance issues. Only enable the property when you are certain that it is needed.
22-Jul-2016
756/2016
22-Jul-2016
757/2016
Parameters can also be mixed with other constant text if necessary. For example:
GET/Service/rest/user/{USERNAME}/format.{type}
You can use the REST rules editor that appears after a recording to add or modify rules to look like
this depending on your requirements. Rules like this can also be generated from WADL or RAML files.
Request/Response Pair Format (see page 758)
Rules Review and Modification (see page 760)
22-Jul-2016
758/2016
Request
The request file must include a valid HTTP header. The URL is the first line of the header. The other
header lines are optional.
The REST data protocol handler supports all the HTTP methods/verbs: GET, HEAD, POST, PUT,
DELETE, TRACE, OPTIONS, CONNECT, and PATCH.
The format of the URL line is:
<METHOD><aspacecharacter><RESTAPIpath><space><HTTP-VERSION>
For example:
PUT/rest-example/control/users/saveHTTP/1.1
If the request includes a body, separate the body from the header with a blank line.
The following example shows a request that contains a body in JSON format.
PUT/rest-example/control/users/saveHTTP/1.1
accept:application/json
content-Type:application/json
Connection:Keep-Alive
User-Agent:LISA
{
"user":{
"emailAddress":"test@test.com",
"firstName":"first-9",
"lastName":"last-9",
"password":"aaaaaaaa",
"username":"dmxxx-009"
}
}
Response
The response file contains an HTTP response code. The file can contain a header and a body. The
response code must be the first line in the file, in the following format:
<HTTP-VERSION><aspacecharacter><HTTP-RESPONSE-CODE>
"user":{"emailAddress":"lisa.simpson@test.com","firstName":"lisa",
"lastName":"simpson","password":"60fAFoq+W0R4HrLgsfPodkWRw9I=",
"phoneNumber":"","username":"lisa_simpson"}}
If the response does not include a response code line, the response code defaults to 200 (OK).
22-Jul-2016
759/2016
You can create multiple rules that match the same operation. The rules are matched in the order
shown. As a result, a rule that is higher in the list can match when you expect a lower rule to match.
To change the order, use the reordering buttons.
If you delete a rule, click Unmatched Traffic to see the effect of removing the rule on the captured
traffic.
To change the values of the following configuration properties, click Properties.
If you have modified the REST URL rules, and then want to revert to the automatically generated URL
rules, you can perform re analysis of the traffic. Click Properties, and when the Properties page
displays, click OK without changing any values.
Max Changes
Defines the maximum number of changes that are allowed for a token before the variability is
considered significant enough to generate a rule.
Think of a URI as a list of "tokens" separated by the "/" character. For example, the URI "GET /rest
/user/1234" contains the tokens:
GET
rest
user
1234
To change the default value, set the lisa.protocol.rest.maxChanges property in the lisa.properties
file.
22-Jul-2016
760/2016
Start Position
Defines the position in the URL at which the REST data protocol starts looking for variable tokens.
The start position is the index of a token in the list of tokens of which a URI is composed. For
example, in the URI:
GET/service/rest/customers"
You may know that a user ID in the format person-nnnn-nnn always follows "user". In this case,
you can define a regular expression to detect this pattern directly. In this example, the regular
expression would be:
person-[0-9]{4}-[a-z]{3}
To change the default value, set the lisa.protocol.rest.parameterBaseName property in the lisa.
properties file.
If you change one or more values for these properties, the data protocol reanalyzes the recorded
traffic.
22-Jul-2016
761/2016
},
{
},
{
}
]
}
}
"value": "New",
"onclick": "CreateNewDoc()"
"value": "Open",
"onclick": "OpenDoc()"
"value": "Close",
"onclick": "CloseDoc()"
Preview Feature
This release includes a preview feature that allows you to make changes to HTTP virtual services. For
information about how to enable this feature, see Preview Features (https://docops.ca.com/display/DTS/.
Preview+Features+v9.5).
From the Transactions tab, you can edit virtual services transactions.
From the Service Configuration tab, you can make changes to the configuration for HTTP virtual
services, including setting and configuring transport protocols and data protocols.
22-Jul-2016
762/2016
Stateless Signatures
When the virtual service environment (VSE) tries to find a match for an inbound request in the
stateless transactions, the VSE starts by searching for a signature that matches the inbound request.
A signature has the following components:
Operation name
(Optional) A set of argument names
In a virtual service, an operation represents an action to be performed. An example of an operation is
depositMoney.
In a virtual service, an argument is a name/value pair that is used as input to the operation. An
example of an argument is the name amount and the value 100.00.
Note: The VSE does not consider the argument values at this stage of the matching
process.
Each signature also has an identifier that is unique within the virtual service.
Multiple signatures can have the same operation name. For example:
Signature A has the depositMoney operation and one argument: amount.
Signature B has the depositMoney operation and two arguments: amount and date.
The unique identifiers can help you differentiate signatures that have the same operation name.
22-Jul-2016
763/2016
Another way to differentiate signatures that have the same operation name is by adding notes (see
page 770).
The following graphic shows the Stateless Signatures pane. For each signature, the unique identifier
and the operation name appear. The selected signature has the unique identifier 159 and the
operation name addUserObject.
To display the argument names, select the signature, then select the Signature Definition tab.
22-Jul-2016
764/2016
If the VSE finds a matching specific transaction, it sends the response that is associated with the
specific transaction.
The Response Data pane contains the response for the selected specific transaction.
The following graphic shows the Response Data pane.
22-Jul-2016
765/2016
You can search for text in a response. You can also configure formatting options, such as syntax
highlighting and word wrap.
If the VSE does not find a matching specific transaction, it sends the response that is associated with
the default transaction.
The default transaction appears at the bottom of the Request Data Arguments pane. The Response
Data pane contains the response for the selected default transaction.
Conversation View
To view a conversation in a virtual service, open the virtual service and select the conversation name
from the View drop-down list.
22-Jul-2016
766/2016
Unknown Transactions
When the virtual service environment (VSE) cannot find a match for an inbound request, it sends one
of the following responses:
Response for unknown conversational request
Response for unknown stateless request
To view the unknown responses, open the virtual service and select Unknown Transactions from the
View drop-down list.
22-Jul-2016
767/2016
22-Jul-2016
768/2016
The Type column indicates whether the result is part of a stateless transaction or a conversation.
The Sub Type column indicates the type of component where the result is located.
The Operation column is blank for unknown responses.
The Snippet column highlights the location of the text.
If no search options are selected and you enter two or more words in the search field, an OR search is
performed.
If no search options are selected, you can do partial word matches. For example, you can search for
the letters pri in primary.
If you receive too many results or too few results, consider adjusting the search options and filters.
Follow these steps:
1. Open a virtual service.
2. (Optional) Configure the search options:
Whole Word
Searches must match the exact word or phrase.
Match Case
Searches are case sensitive.
Reg Ex
The text in the search field is treated as a regular expression. The Reg Ex option is
mutually exclusive with the Whole Word and Match Case options.
3. (Optional) Configure the filters.
4. Enter the text in the search field.
As you type, suggestions are displayed below the search field.
5. Click a suggestion or press Enter.
If the search text is found, one or more results appear.
6. Click an entry in the table.
The editor displays the component where the text is located.
22-Jul-2016
769/2016
770/2016
1. Click
22-Jul-2016
771/2016
When the virtual service environment (VSE) searches for a signature that matches an inbound
request, it starts at the top of the list of signatures and proceeds downward. Therefore, moving a
signature up or down affects the order in which matching takes place.
Changes to a signature definition are automatically applied to all of the specific transactions for the
signature. For example, if you add the NewArg argument, the specific transactions now have this new
argument.
By default, matching is case-sensitive. To force the comparison operators (see page 775) to ignore
case for an argument, go to the Signature Definition tab and clear the check box in the Case Sensitive
column.
The following graphic shows the Signature Definition tab.
By default, argument values are processed as strings. For example, "10000" is considered less than
"9" because "1" comes alphabetically before "9". To force an argument value to be processed as a
number, go to the Signature Definition tab and select the check box in the Is Numeric column.
Date patterns are used to parse date information. The Date Pattern column in the Signature
Definition tab is read only.
Follow these steps:
1. Open a virtual service.
2. To add a signature by copying and pasting an existing signature from the same virtual service:
a. Select one or more signatures in the Stateless Signatures pane.
b. Click the Copy icon.
c. Click the Paste icon.
d. (Optional) Edit the new signature or signatures.
3. To add a signature by copying and pasting an existing signature from another virtual service:
Warning! Avoid copying signatures between virtual services that use different data
22-Jul-2016
772/2016
3.
DevTest Solutions - 9.5
Warning! Avoid copying signatures between virtual services that use different data
protocol handlers. For example, a signature from an HTTP-based virtual service will
not function correctly in a JMS-based virtual service.
773/2016
22-Jul-2016
774/2016
Note: If the virtual service is based on a transport protocol other than HTTP, this feature
has the following prerequisite: Open the corresponding virtual service model in DevTest
Workstation and enter the path to the recording session file in the Documentation field. A
recording session file is one of the following files:
VRS file
Generated by the Virtual Service Image Recorder in DevTest Workstation.
VR2 file
Generated by the CA Service Virtualization Recorder in the DevTest Portal.
Follow these steps:
1. Open a virtual service.
2. In the Stateless Signatures pane, click Add and select Import Request/Response Pairs.
The Import Request/Response Pairs dialog opens.
3. Specify the files that contain the request/response pairs. You can drag the files into the dialog,
or you can click a button to select the files from a file system.
4. Click Done.
If you want to allow an argument to have any value, set the operator to Anything.
22-Jul-2016
775/2016
The following graphic shows the use of various operators. In this scenario, all of the argument values
in the inbound request match the criteria in the specific transaction. For example, the account
balance in the inbound request is 5000. The specific transaction indicates that the account balance
must be greater than 100.
776/2016
Tip: To filter responses on metadata, use the Request Data Manager data protocol when
you are recording. On the Request Data Manager screen, use a metadata element and set
it as a request argument. So, this filters requests at playback time also.
Updating Responses
You can update the response that is associated with a specific transaction. You can also add and
delete responses.
Change the Think Time of a Response (see page 777)
Edit the Response Metadata (see page 778)
Add and Delete Responses (see page 779)
22-Jul-2016
777/2016
Each response for a specific transaction includes a field named Think time spec. This field specifies
how long to wait before sending the response. If the virtual service was created from recording, the
initial value is based on the response behavior that was observed during the recording.
To simulate faster performance, decrease the value.
To simulate slower performance, increase the value.
By default, the value is in milliseconds. To specify the unit of time, add a suffix to the number. Case
does not matter. The following suffixes are allowed:
t: milliseconds
s: seconds
m: minutes
h: hours
You can specify a number range. The think time is randomly selected from the range. For example,
the value 100-1000 specifies a random think time from 100 to 1000 milliseconds.
If the think time is 10 milliseconds and it takes 5 milliseconds to process the request and find the
response, you only incur an extra 5 milliseconds of delay.
If the think time is 0, or is less than the time that it took to process the request, VSE sends the
response as fast as it can.
The unknown responses in a virtual service have the same field.
When you deploy a virtual service (see page 782), you can configure a related field named Think time
scale. This field specifies the percentage by which to multiply all of the Think time spec fields in a
virtual service.
Follow these steps:
1. Open a virtual service.
2. Locate the response for the specific transaction or unknown response.
3. Change the value of the Think time spec field.
778/2016
22-Jul-2016
4.
779/2016
4. From this tab, you can make changes to the configuration of this transport protocol. For
information about each field, see Virtualize Services via Recording (HTTP or HTTP/S) (see page
711).
In Advanced mode, the Save button has an option to Save without Regeneration of Image. Select
this option if you want to save the changes you have entered, but not regenerate the service image.
The Cancel button lets you revert all edits you have made.
In some cases, field values are shown as Unknown, which indicates that a 9.0 or later version of the
virtual service does not have the marked configuration item values and those items are represented
as unknown.
If a virtual service has an unsupported DPH, you cannot view or change the DPHs from
DevTest Portal. You must edit the virtual service using DevTest Workstation.
To add a DPH:
1. Click the Add DPH icon (plus sign) to add one of three Request DPHs that are available (Web
Service (SOAP), XML Data Protocol, and JSON V2).
2. Either drag-and-drop an available DPH from the Add Request DPH window or double-click the
DPH.
The bottom right of window displays the Compare Results pane. The Compare Results pane has three
sub-panes.
The left sub-pane lists up to the first 1,000 transactions for the virtual service. The transactions that
are listed are determined by the selected DPH and whether you click the Raw or Previous button on
the center sub-pane.
22-Jul-2016
780/2016
The center sub-pane displays data about the selected transaction. To display data for a selected
transaction with no DPHs applied, click the Raw button. To display data for the selected transaction
with up to the previous DPH applied, click the Previous button. The "previous" DPH is the DPH that
occurs just before the currently selected one.
The rightmost sub-pane acts similarly to the center sub-pane, except it displays the data for the
selected transaction with all the DPHs applied, up to the currently selected DPH.
Note: If the virtual service is based on a transport protocol other than HTTP, this feature
has the following prerequisite: Open the corresponding virtual service model in DevTest
Workstation and enter the path to the recording session file in the Documentation field. A
recording session file is one of the following files:
VRS file
Generated by the Virtual Service Image Recorder in DevTest Workstation.
VR2 file
Generated by the CA Service Virtualization Recorder in the DevTest Portal.
Follow these steps:
1. Open a virtual service.
2. Click
22-Jul-2016
781/2016
3.
22-Jul-2016
782/2016
Note: The Concurrent capacity field appears only in CA Service Virtualization for
Performance mode.
VSE allocates various threads equivalent to the total concurrent capacity. Each thread
consumes some system resources, even when dormant. Therefore, for optimal overall
system performance, set this setting as low as possible. Determine the correct settings
empirically by adjusting them until you achieve the desired performance, or until
increasing it further yields no performance improvement.
Out of the box protocols use a framework-level task execution service to minimize thread
usage. For these protocols, a concurrent capacity of more than 2-3 per core is rarely
useful, unless the virtual service has been highly customized.
For extensions and any virtual service that does not use an out of the box protocol, setting
a long Think Time may consume a thread during the think time. In these cases, you may
need to increase the concurrent capacity.
The following formula gives an approximate initial setting in these cases:
ConcurrentCapacity=(Desiredtransactionspersecond
/1000)*AverageThinkTimeinms*(ThinkScale/100)
Example:
Assume that you are using a custom protocol that does not use the framework task
execution service to handle think times. You want an overall throughput of 100
transactions per second. The average think time across the service image is 200 ms, and
the virtual service is deployed with a 100 percent think scale.
(100Transactionspersecond/1000)*200ms*(100/100)=20
In this case, each thread blocks for an average of approximately 200 ms before
responding, and during that time is unable to handle new requests. We therefore need a
capacity of 20 to accommodate 100 transactions per second. A thread would become
available, on average, every 10 ms, which would be sufficient to achieve 100 transactions
per second.
Default: 1
Think Time Scale
Specifies the think time percentage for the recorded think time.
Note: A step subtracts its own processing time from the think time to have
consistent pacing of test executions.
22-Jul-2016
783/2016
22-Jul-2016
784/2016
The toolbar shows actions that you can take on the virtual services and recordings. When an icon is
dimmed, that action is unavailable for the selected artifact. You can select multiple virtual services or
recordings and click the icon to perform actions on all of them.
Start
Stop
785/2016
in the Name
22-Jul-2016
786/2016
Execution Mode
This option lets you set an execution mode for the virtual service. The number of execution
modes available for a virtual service depends on the type of test step. For example, if a model
does not have a live invocation step, it does not support the Learning or Live Invocation options.
To change the execution mode, click the pencil icon.
The available execution modes are:
Most Efficient
The fastest mode; it does not execute the routing or tracking steps. This mode also restricts
generated event tracking.
Transaction Tracking
This mode fires more events than Most Efficient and remembers transaction flow through
sessions. This transactional information is used to help determine why a specific response was
chosen for a specific request. This mode does not perform as efficiently as Most Efficient.
Transaction Tracking mode does not show live system responses; it only shows the response
from the service image.
Live Invocation
This mode uses the Live Invocation step of the model to determine a response to the current
request. Instead of using the response from the virtual service, it accesses the live service to
get the response. The target system of the live invocation controls performance. This mode is
also known as pass through.
Learning Mode
Learning mode is like Image Validation mode but it automatically "heals" or corrects the
virtual service to have the new or updated response from the live system. The next request
that is passed into the virtual service automatically sees the new response that was "learned".
Not only one system is being checked to learn, but both are, and the live system currently
prevails.
Image Validation
This mode uses both the VSE and the live system to derive a response to the current request.
The responses are logged for applying later to the service image using the View Session and
Tracking panel. This mode allows a live comparison between the responses that VSE provides
and a corresponding live system and, where differences exist, patches or heals the VSE service
image to keep in sync with the live system. This mode is also known as "live healing mode."
Image Validation is the least efficient of all the modes.
Dynamic
This mode enables the model to determine for each request which of the other modes to use.
Performance is, therefore, unpredictable. The only requirement is that the VS Routing step is
present in the model after the protocols listen step or steps.
The following chart shows which transport protocols support which execution modes.
22-Jul-2016
Transport Protocols
Most
Efficient
Transaction
Tracking
Live
Learning
Invocation Mode
Image
Validation
Dynamic
HTTP/S
Yes
Yes
Yes
Yes
Yes
Yes
IBM MQ Native
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
Yes
787/2016
Most
Efficient
Transaction
Tracking
Live
Learning
Invocation Mode
Image
Validation
Dynamic
JMS
Yes
Yes
Yes
Yes
Yes
Yes
Standard JMS
Yes
Yes
No
No
No
Yes
RabbitMQ
Yes
Yes
Yes
Yes
Yes
Yes
Java
Yes
Yes
Yes
Yes
Yes
Yes
JDBC
Yes
Yes
No
No
No
Yes
TCP
Yes
Yes
Yes
No
No
Yes
Yes
No
No
No
Yes
CICS Transaction
Gateway (ECI)
Yes
Yes
Yes
No
No
Yes
IMS Connect
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
No
Yes
JCo IDoc
Yes
Yes
Yes
No
No
Yes
Opaque Data
Processing
Yes
Yes
Yes
Yes
Yes
Yes
Last Start
Displays the date and time this service was last started.
Last End
Displays the date and time this service was last stopped.
Group Tag
Displays the name of the virtual service group for this virtual service. If deployed virtual services
have group tags, those tags are available in the field when you enter a character. A group tag
must start with an alphanumeric character and can contain alphanumerics and the following
special characters:
period (.)
dash (-)
underscore (_)
dollar sign ($)
You must use the Tab or Enter key or mouse click outside the input field of the Group Tag field,
then click Save to update the field. To delete a group tag from a virtual service, double-click the
group tab column, then delete the value, then click Save.
Status
Identifies the current state of the virtual service.
Auto-Restart
Identifies whether auto restart is enabled or disabled. To change this value while the service is
running, click this field.
Up-time
22-Jul-2016
788/2016
789/2016
Note: If a deployed virtual service shows no transactions, then the client is not configured
properly. Reconfigure the client to reference the virtual service instead of the real system.
If another service is using that port, stop that service or change the port setting to remove
the conflict. Show the inspection view for the selected virtual service.
Download MAR To download the backing archive for the virtual service, click this option. The
system prompts you to save the MAR file that is associated with this virtual service.
Reset Txn Count Resets the transaction and error counts for the selected virtual service.
Remove from VSE Removes the selected virtual service or recording from the environment.
22-Jul-2016
790/2016
22-Jul-2016
791/2016
Inspection View
Inspection View includes the Matching view and the Request Event Details view.
Matching View
The Matching View displays when you select Inspection View. From the Request Event Details view,
you can return to matching view by clicking the Matching View icon
The Matching View lists recent requests that the virtual services processed. When you select a
request, the dialog shows a description of how the request was (or was not) matched. The same
information is recorded in the vse_matches.log file. If any events were associated with the selected
request, they display at the bottom of the panel.
The Request Event Details view shows the list of inbound requests that caused the virtual service to
error out. When you select a request, the list of VSM steps that executed is shown, with steps
containing error events selected. To see the events that occurred during processing for that step
(similar to the ITR), select a step.
Note: When a virtual service exceeds 100 transactions for each second, the Property Set
and Property Removed events are disabled to allow for greater overall performance.
Session Viewing
Session viewing is available only for virtual services that run with an execution mode of Transaction
Tracking or Image Validation. For more information about execution modes, see Monitor Virtual
Services (see page 784).
To view the session tracking for a selected virtual service, click the Actions column for a service and
22-Jul-2016
792/2016
Session Information
The Session Information area lists all the sessions for the selected virtual service in tabular format. To
select or hide the columns that show, click the Filter icon at the upper right of the pane.
Session Status
Displays an icon to indicate the current session status.
Matched
Indicates that there is an exact transaction match between the virtual service and the live
system. Matched also indicates that the response was successfully recorded, and the recorded
response does not differ from the live system response.
Body Mismatched
Indicates that there is a match between the virtual service and the live system. However, the
recorded response body differs from the live system.
Navigation Mismatched
Indicates that conversational transaction navigation is different between the virtual service
recording and the live system. For example, the response was not found in the virtual service,
but the response is played back from the live system.
Session ID
Identifies the unique ID for each session.
Created On
Displays the time stamp of the first transaction in that session.
Modified On
Displays the time stamp of the most recent transaction.
Transaction Count
Identifies the number of transactions that were recorded after the service started.
Client ID
(Protocol-specific) For HTTP, displays the endpoint of the client that submitted the transaction.
Most Recent Request
Identifies the most recent request that came through on the specific session.
Response Information
22-Jul-2016
793/2016
The Response Information area shows the list of transactions for the selected session. When you
point the mouse to the colored ball in the first column of this pane, a tooltip identifies the match for
that transaction. If you click any specific transaction, the Request and Response tabs compare request
/response between the VSE system and the live system.
In the Response Information pane, the following icons represent transactions:
Matched
Indicates a response body and navigation match between the live system and VSE image.
Body Mismatched
Indicates a response body mismatch with a navigation match.
Navigation Mismatched
Indicates a navigation mismatch.
For conversational transactions:
Once a transaction is mismatched or goes to the live system, all subsequent transactions are
also mismatched and go to the live system. Once a conversation goes to the live system for a
conversation, the VSE image lacks the context to switch the conversation back to the VSE
image.
For stateless transactions:
Once a transaction is mismatched or goes to the live system, subsequent transactions still
match against the VSE image first to find a response. The response is not played back from the
live system if the response exists in the VSE image.
Model Healing
Use the Download Updated VSI
button in the Session Information area to update the service
image with live session/stateless transactions. This process is referred to as model healing. You use
model healing to remove the disparity between the VSE image and the live system so that the virtual
service works correctly. Select the transactions to update by selecting the check box to the left of the
transaction, then clicking Download Updated VSI in the Response Information area.
794/2016
Note: The Copybook Bundle page lets you manage your copybook files. However, to apply
them to recorded transactions, you must use the existing procedures in the DevTest
Workstation. For more information about using the copybook data protocol with a
recording, see Copybook Data Protocol (see page 920) and How to Use the Copybook Data
Protocol (see page 921).
to limit
22-Jul-2016
795/2016
Start Column
Copybooks frequently start each line with a line number. This parameter defines the
column on which the parser starts when trying to parse a copybook file definition.
Value: A zero-based inclusive index. However, you can think of it as a "normal" one-based
exclusive index.
Default: 6
Example: If you set this value to 6, the parser skips the first six characters in a line and
starts with the seventh character.
End Column
Occasionally, copybooks contain other reference data at the end of each line. When that
happens, the parser must know on which column to stop. If there is no "extra" data at the
end of the lines in the file, you can set this number to something greater than the length
of the longest line in the file. If this number is greater than the length of a line, the parser
stops at the end of the line.
Value: A zero-based exclusive index. However, you can think of it as a "normal" one-based
inclusive index.
Example: If you set this value to 72, the parser reads the 72nd character in the line and
then it stops (without trying to read the 73rd).
Codepage
The codepage defines the encoding of the recorded transaction.
Note: The Start Column, End Column, and Codepage values are required for parsing
in the Copybook Bundle page. These values are not transferred to the DevTest. You
must modify these values in the DevTest if they differ from the default values.
7. Click Reload
8. Click Status to view the number of copybooks in your bundle by status (Parsed, Error, Not
Parsed).
9. Click Save
Import a Copybook
The Copybook Bundle page lets you import an existing copybook that you can then use in your
recordings.
Follow these steps:
1. Open an existing copybook bundle, or click Create, Copybook Bundle in DevTest Portal.
2. The Copybook Bundle tab opens.
3.
22-Jul-2016
796/2016
3. Click Import
in the Copybooks panel and browse to the location of the copybook you
want to import.
4. Click Open.
The contents of the selected copybook display in the Selected panel.
5. Click Parse
to parse the selected copybook.
The results display in the Parsing Result panel.
A green check mark next to the copybook name indicates that the copybook parsed
successfully.
A red circle with an X indicates that there were errors in the parsing.
A black dash indicates that the copybook has not been parsed.
6. Make any desired changes or corrections to the copybook.
7. Import any additional copybooks that you want to include in this bundle.
8. Import (see page 797) or create (see page ) the mapping file for your copybook bundle.
9. Click Save
Create a Copybook
If you do not have an existing copybook to import, you can create one in the Copybook Bundle page.
Follow these steps:
1. From DevTest Portal, click Create, Copybook Bundle.
The Copybook Bundle tab opens.
2. Click Add
3. Use the text editor in the Selected Copybook.txt panel to enter the content for your
copybook.
4. Click Save
22-Jul-2016
1.
797/2016
1. Open an existing copybook bundle, or click Create, Copybook Bundle in the DevTest Portal.
The Copybook Bundle tab opens.
2. Click the Mapping File tab.
3. Click Import
and browse to the location of the mapping file you want to import.
4. Click Open.
The contents of the mapping file display.
5. Make any desired changes or corrections.
For more information about specific fields or sections, see Create a Mapping File (see page 798
).
6. Click Save
Note: As you create your mapping file, the Mapping File Entry panel shows your entries in a
mapping file format. To see the entire mapping file, click Toggle
Entries panel.
in the Mapping
3. Click Add
22-Jul-2016
798/2016
4.
DevTest Solutions - 9.5
Type
Specifies the payload type. Select either Request or Response.
Name
Defines a unique name to identify the type of request or response. The name must be
unique among the set of payloads of the same type. For example, you can have a request
and response with the same name, by you cannot have two requests with identical names.
Match Type
The Match Type attribute applies differently to payload definitions with a "Response"
type. For example, responses do not contain arguments or operation names. If a payload
"Response" sets this attribute to Argument, Attribute, or Operation, it never matches
anything. This is true unless the matching request selects Defines Response, which
overrides this attribute. If a payload "Response" sets this attribute to All, the argument,
attribute, and operation phases of matching are skipped.
Value: One of the following:
All: Try to match in the following order: Argument, Attribute, Meta Data, Operation,
then Payload.
Meta Data: Try to match only the specified Meta Data.
Payload: Try to match on the body of the request.
Attribute: Try to match only the specified attribute.
Operation: Try to match on only the operation name.
Argument: Try to match on only the specified argument.
Default: Payload
Key
The behavior of this attribute depends as follows on the Match Type:
If the Match Type is Operation or Payload, the value of this attribute is ignored and
can be excluded.
If the Match Type is Argument, Attribute, or Meta Data, this attribute is assumed to
be the value of an argument, attribute, or meta data entry and is required for
matching.
If the Match Type is All, this attribute is required and behaves as described previously
during the argument, attribute, and Meta Data matching phases. During the operation
and payload matching phases, however, the value of this attribute is used for matching
(as opposed to using the value of the Key attribute as is the case if the Match Type is
Operation or Payload).
Value
The behavior of this attribute (and whether it is required) depends as follows on the
Match Type:
If the Match Type is Operation or Payload, the value of this attribute is ignored and
22-Jul-2016
799/2016
and Down
Click Add
22-Jul-2016
800/2016
6.
Click the Right Arrow in the All Copybooks column to move the selected copybook to the
Added Copybooks column.
To remove a copybook from this mapping file, click the Left Arrow in the Added
Copybooks column to remove the selected copybook.
7. The Copybook Configuration Elements panel let you define more configuration elements for
your copybook, if required.
Complete the following fields:
Key
Defines the unique string in the record that identifies the copybook. Technically, this
attribute is optional. However, if a key is not provided, it means that that copybook is the
only one that will ever get applied to the payload. It is applied over and over until the
payload runs out of bytes. If multiple copybook elements have no key, then the first one is
always used, unless the max attribute is specified.
Order
Defines a hint as to the order in which the records are found in the payload. The numbers
that are used are irrelevant, but "later" records in the payload should use a larger integer.
Multiple copybooks can be tagged with the same order number, meaning that those
records could be in any order. When a record has been found with a specific order
number, subsequent searches only search for copybooks with that order number and
greater. You can include copybooks in a group that will never match against the payload.
They are ignored. However, this affects performance because each copybook has to be
checked.
Default: 0
Max
Defines the maximum times that a copybook can be applied to the payload. Blank values,
0, negative numbers, nonnumbers, and nonexistent values all mean "no limit".
Name
Defines a value to override the record name (that is, the root level in the copybook).
If you set this value, the generated node in the XML for this copybook uses this name
instead of the record name from the copybook definition.
If you do not set this value, the default is to look up the record name from the
copybook definition and use that.
If you set this value to the record name from the copybook definition, the only effect is
on readability of this file.
Length Field
Defines how to split the payload so that the next record search begins in the correct place.
If this attribute is not present, the processor attempts to determine the length of the
copybook from the definition. If, for some reason, it cannot figure out the length, the
processor assumes that the rest of the payload applies to this copybook, and ends
processing after applying this copybook. The processor ignores this field if it is not an
unsigned Display numeric field.
8. Repeat this process for more entries in this mapping file.
22-Jul-2016
801/2016
and Down
Click Delete
9. Click Save
Map a Payload
The Payload Mapping tab lets you see how a copybook maps a particular payload file. Use the
Payload Mapping tab to debug issues with your copybook bundle.
22-Jul-2016
802/2016
2. Select a copybook bundle from the list and click the pencil icon to edit it.
3. Click the Payload Mapping tab.
4. Click the blue folder icon to import payload data from a file.
5. Select the payload data file from the file system.
Supported data types are byte data or base 64 string (byte data that has been encoded to
byte64 string).
6. (Optional) Select a code page from the Encoding list to change encoding for the file.
7. (Optional) Use the Toggle icon (two horizontal arrows) to decode Base64 files or to undo the
last decoding option you chose.
8. (Optional) Use the Copybook Toggle icon
to toggle between mapping the payload with
the mapping entry or mapping with copybooks.
To select copybooks from the Available Copybooks list, click the arrow beside them to move
them into the Selected Copybooks column.
9. To map the payload data to the selected copybook, click the Map Payload
icon.
22-Jul-2016
803/2016
22-Jul-2016
804/2016
22-Jul-2016
805/2016
Note: Response times in this report include think time. This means that each response time
includes the amount of time required to process the request and the specified think time.
The Virtual Service Response Time report displays the displays the maximum, average, and minimum
response times, in milliseconds, in the form of a line graph. The response times are captured
according to a defined sampling interval. Each data sample is represented by a square block on the
report. The sampling interval defaults to every 5 minutes, but you can modify the interval by setting
the lisa.vse.metrics.sample.interval property in your local or site properties file. For more
information about defining a property, see Custom Property Files (see page 1749).
Each square point in the line graph represents something .
Click an item in the legend at the bottom of the report to hide or show the corresponding data. For
example, click Average to hide the data averages in the graph. When data is hidden, the legend item
turns gray.
22-Jul-2016
806/2016
22-Jul-2016
807/2016
22-Jul-2016
808/2016
22-Jul-2016
809/2016
VS Availability
The VS Availability report displays the availability of the virtual services on a single VSE for a specified
time period. This report shows the status of the virtual service, up or down, in a single bar for each
summary period. The summary period (day, week, or month) is defined in the VSE Server Availability
(see page 809) report.
Each color-coded bar shows the uptime and downtime for the virtual service as a percentage of the
summary period. Hover your mouse over each section of a bar to see the uptime and downtime in
seconds. The second page of the report shows the seconds and percentages of uptime and downtime
for each virtual service in the report.
22-Jul-2016
810/2016
More Information:
View and Navigate Reports (see page 377)
Testing Execution Reports (see page 383)
Testing Performance Reports (see page 393)
CAI Top N and Metrics Reports (see page 1253)
User Activity Report (see page 1512)
For a quick summary of the functionality available in the Portal, see DevTest Portal Functionality
22-Jul-2016
811/2016
Note: If you have service images from releases of VSE earlier than LISA 6.0, export those
service images. Exporting moves them from the database of earlier versions to the file
system in which they are stored in the current release. For more information, see Legacy
Service Images (see page 960).
Opening a service image allows you to change the image in the Service Image Editor.
22-Jul-2016
812/2016
Note: The process for combining conversations is similar. For each conversation in each
source service image, the starter transaction is matched against each starter in the
conversations of the target. If no starter matches, new conversations are created in the
target image. If they do match, the same process for the stateless list is applied to each
Meta node in the source conversation tree. The process adds new transactions and merges
matching transactions as appropriate.
Note: As a best practice, think of service images as transient and remove unused or
22-Jul-2016
813/2016
2.
Image of the Virtual Service Image Recorder page, highlighting the Import Traffic field
22-Jul-2016
4.
814/2016
More Information:
Create a Service Image from Scratch (see page 815)
Create a Service Image from a WSDL (see page 815)
Create a Service Image from Request-Response Pairs (see page 823)
Create a Service Image from PCAP (see page 825)
Work with VSMs (see page 915)
Using Data Protocols (see page 916)
22-Jul-2016
2.
815/2016
Note: If the default service image name is already in use, a warning icon appears.
Note: To load parameters from a previously saved service image, click Load from
File
4. Click Next.
The Connection tab opens.
5. Enter the port number to which the virtual service listens in the Listen on port field at the
bottom of the window.
6. Add the WSDL to be virtualized in the WSDL URL field.
This entry can be a local file or a URL.
22-Jul-2016
7.
816/2016
7. Select the service in that WSDL that must be virtualized, in the Service field.
Usually, only one selection is available.
8. Select the operations in that service to virtualize.
By default, all the operations are selected.
9. Click Next.
The request/response side data protocols options open.
10. Select Web Services (SOAP).
The Request Side Data Protocols list is prepopulated with Web Services (SOAP) and the XML
data protocol handlers. The Response Side Data Protocols list is automatically populated with
the Delimited Text data protocol.
11. Click Next.
12. See Delimited Text Data Protocol (see page 934) for information about how to configure the
Delimited Text data protocol. When you have configured the Delimited Text data protocol,
click Next.
On the next window, the service image is generated and the wizard is finished.
13. Click Finish.
Note: To save the settings on this recording to load to another service image
recording, click Save
above the Finish button.
817/2016
Note: To load parameters from a previously saved service image, click Load from
File
For more information about field descriptions, see Basics Tab (see page 828).
3. Click Next.
4. In the Listen on port field at the bottom of the window, enter the port number to which the
virtual service listens.
5. In the WADL URL field, add the WADL to virtualize.
This entry can be a WADL file on the file system or a URL.
6. Click Refresh WADL Cache
7. In the Endpoint field, select the endpoint in the WADL that must be virtualized.
22-Jul-2016
818/2016
Important! The Schema property is not interpreted in any way and appears exactly as
specified in the transaction body within DevTest.
Note: To load parameters from a previously saved service image, click Load from
File
For more information about field descriptions, see Basics Tab (see page 828).
3. Click Next.
4. In the Listen on port field at the bottom of the window, enter the port number to which the
virtual service listens.
22-Jul-2016
5.
819/2016
5. In the RAML URL field, add the RAML of the web service to virtualize.
You can also select the RAML from the drop-down list, or click Browse to locate the RAML
from the file system.
This entry can be a RAML file on the file system or a URL.
6. Click Refresh RAML Cache
.
DevTest parses the RAML and populates the Endpoint field and the Methods pane.
Note: If DevTest fails to parse the RAML, a warning icon displays after the Endpoint
field. To view the error message, click the warning icon.
22-Jul-2016
820/2016
1.
Right-click VirtualServices on the Project panel and select Create New VS Image, From
Swagger 2.0 Specification.
From the File menu, select New, VS Image, From Swagger 2.0 Specification.
The Virtual Service From Swagger 2.0 Specification window opens.
2. Enter a service image name and the name of a VS model file.
Note: To load parameters from a previously saved service image, click Load from
File
For more information about field descriptions, see Basics Tab (see page 828).
3. Click Next.
4. In the Listen on port field at the bottom of the window, enter the port number to which the
virtual service listens.
5. In the URL field, enter URL or browse file that contains the Swagger 2.0 specification.
6. Click Refresh Swagger Cache
7. When the Swagger parsing is successful, the Endpoint field and Methods fields are populated
with information from the Swagger file. The Endpoint field is disabled and is for information
only.
8. In the Methods pane, select the methods in the endpoint to virtualize.
By default, all the methods are selected. You can click Select All or Select None, as
appropriate.
9. Click Next.
10. Add or chain other Data Protocol Handlers for this VSI from the Swagger file as appropriate.
By default, the Rest Data Protocol Handler is selected.
11. Click Next.
On the next window, the service image is generated and the wizard is finished.
12. Click Finish.
To save the settings on this recording to load to another service image recording, click Save
above the Finish button.
22-Jul-2016
821/2016
Note: The JAR file contains the cmt2.jar file that is required for step 3 of the
following procedure. This file can be located anywhere.
22-Jul-2016
822/2016
5.
DevTest Solutions - 9.5
Note: To load parameters from a previously saved service image, click Load from
File at the bottom of the window.
6. Click Next.
The Connection tab opens.
7. Select the operations in that service to virtualize.
By default, all the operations are selected.
8. Click Next.
The request/response side data protocols options open.
9. Select Web Services (SOAP).
The Request Side Data Protocols list is prepopulated with Web Services (SOAP) and the XML
Data Protocol data protocol handlers. The Response Side Data Protocols list is automatically
populated with the Delimited Text Data Protocol.
10. Click Next.
11. See Delimited Text Data Protocol (see page 934) for information about how to configure the
Delimited Text data protocol. When configured, click Next.
On the next window, the service image is generated and the wizard is finished.
12. Click Finish.
Note: To save the settings on this recording to load into another service image
recording, click Save
, above the Finish button.
22-Jul-2016
823/2016
Note: To load parameters from a previously saved service image, click Load from
File
4. Browse the file system for the directory that contains your request/response pairs.
A transaction is generated for each request/response pair in the directory that you specify.
For HTTP/S, the files must contain the entire SOAP envelope and the header.
5. Specify the following information:
Transport protocol
Appropriate encoding
Whether to are use binary request/response pairs
6. Click Configure.
The configuration window for the selected transport protocol opens.
7. Enter the configuration information for the request and click Finish.
The Virtual Service from Request/Response Pairs window opens.
8. Click Configure again to persist the values you entered.
If you select a different protocol, that protocol is presented. You can provide the
configuration information for it.
9. Click Next.
The Data Protocols panel opens, where the request/response pairs were analyzed and
appropriate data protocols for the request and response were defaulted.
22-Jul-2016
10.
824/2016
10. Make any changes or add more data protocols and click Next.
The virtual service request/response pairs for token identification and conversations display.
Only stateless transactions are supported from request/response pairs.
11. Click Next.
Note: To save the settings on this recording to load to another service image
recording, click Save
above the Finish button.
After the processing of the VS image finishes, you can open the service image and the virtual
service model.
Create a Service Image from Request-Response Pairs from the Command Line
In addition to creating a service image from request/response pairs using the UI, you can create the
image through the ServiceImageManager command line.
Follow these steps:
1. Create a service image in the UI.
2. After the image is created, click Save
above the Finish button, then click Finish.
The settings are saved in a file with a .vrs extension.
3. Navigate to the LISA_HOME\bin directory and enter the following command:
ServiceImageManager-vrsrecording-session-filevsi-file=vsi-file-vsm_file=vsm-file--record
recording-session-file
Defines the path of the .vrs file that you created previously, and
vsi-file
Defines the service image file that is created.
vsm_file
Defines the virtual service model files that is created.
825/2016
Note: To load parameters from a previously saved service image, click Load from
File
2. (Optional) To add documentation about this virtual service, click the Notes tab.
3. Click Next.
The data protocol window opens.
4. Click Next.
5. To select the packet capture file to be used for input, enter the file name or browse the file
system.
6. Select HTTP/S as the transport protocol, and click Configure.
The Virtual Service from PCAP Transport Protocol Configuration window opens.
7. Enter the following configuration options:
Listen/Record on port
Defines the port on which the client communicates to DevTest.
Target host
Defines the name or IP address of the target host where the server runs.
Target port
Defines the target port number listened to by the server. Leave this field blank if you will
select a Proxy passthrough style.
Defaults: 80 (HTTP) and 443 (HTTPS)
Note: Target host and Target port are important. They determine how DevTest
matches packets. Select Gateway and enter the IP address and port of the server
hosting the service to be virtualized. You could have some network traffic for every
computer on the subnet where the capture was performed, depending on how the
PCAP capture was done. Given an IP address and port, the data can be filtered
from the file for all packets going to or from a specific IP and port. Then those
packets are reconstructed to form valid TCP streams, which remove duplicates, and
22-Jul-2016
826/2016
Note: For more information about configuring VSE in a two-way SSL environment,
see Virtualizing Two-way SSL Connections (see page 840).
Allow duplicate specific transactions (good for NTLM)
Specifies whether to record duplicate specific transactions.
8. Click Finish to return to the previous window.
9. Click Next to start recording.
827/2016
Right-click the VirtualServices node on the Project panel and select Create a VS Image, By
recording.
The Virtual Service Image Recorder opens.
2. Complete the following Virtual Service Image Recorder tabs, as appropriate:
Basics (see page 828)
Data Protocols Window (see page 831)
Recording by Transport Protocol (see page 834) (provides instructions for each method of
recording virtual service images)
Basics Tab
The Basics tab on the first window in the Virtual Service Image Recorder wizard lets you enter the
name, protocol, and navigation options for the image.
Enter the information as needed in the fields, depending on the protocol you are using. All
subsequent windows are protocol-specific. For more information about specific protocols, see
Transport Protocols (see page 834).
22-Jul-2016
828/2016
829/2016
More flexible: Includes prepare steps (leading to a five-step model in case of HTTP/S
22-Jul-2016
830/2016
Note: To load parameters from a previously saved service image, click Load from File
at the bottom of the window.
The Notes tab lets you document this service image.
Note: If you import a raw traffic file with the VSE Recorder and then click the back button
to return to the first panel, the VSE Recorder reimports the traffic file and processes the
transactions again, creating twice the number of transactions.
Additionally, if you complete the process but you do not initially designate a traffic file and progress
to the recording panel, then go back to the first panel and select the traffic file; when you go through
the VSE Recorder again, the recorder processes no transactions.
22-Jul-2016
831/2016
Image of the Data Protocols page on the Virtual Services Image Recorder
The recorder can use the following data protocol handlers. Choosing the appropriate data protocol
helps the recorder to analyze the information it records to differentiate the conversations and
identify transactions belonging to the conversations. You can chain these data protocol handlers to
use them with each other.
Auto Hash Transaction Discovery
Identifies a message by the hash code of the data. The hash code changes with even a slight
change in the data, which effectively makes all requests unique. This protocol is useful if you run
the same small set of requests against the service.
CICS Copybook Data Protocol
Splits the recorded request into its respective container chunks. It then sends each chunk to the
Copybook data protocol and aggregates the corresponding XML.
Copybook Data Protocol
Converts copybook text to XML.
CTG Copybook Data Protocol
Splits the recorded request into its respective container chunks. It then sends each chunk to the
Copybook data protocol and aggregates the corresponding XML.
Data De-identifier
Tries to recognize sensitive data and substitute random values during the recording. For more
information, see De-identifyng Data (see page 1021).
Delimited Text Data Protocol
22-Jul-2016
832/2016
For more information about these data protocols, see "Using Data Protocols (see page 916)".
22-Jul-2016
833/2016
Transport Protocols
Each available transport protocol is described in the following sections:
HTTP/S Transport Protocol (see page 834)
IBM MQ Native Transport Protocol (see page 842)
IBM WebSphere MQ Transport Protocol (see page 847)
JMS Transport Protocol (see page 851)
Standard JMS Transport Protocol (see page 861)
RabbitMQ Transport Protocol (see page 865)
Java Transport Protocol (see page 868)
JDBC Transport Protocol (see page 870)
TCP Transport Protocol (see page 877)
CICS (LINK DTP MRO) Transport Protocol (see page 880)
CICS Transaction Gateway (ECI) Transport Protocol (see page 898)
IMS Connect Transport Protocol (see page 900)
SAP RFC via JCo Transport Protocol (see page 903)
JCo IDoc Transport Protocol (see page 905)
Opaque Data Processing Transport Protocol (see page 907)
Right-click the VirtualServices node on the Project panel and select Create a VS Image, by
Recording.
The Virtual Service Image Recorder opens.
2. Complete the Basics (see page 828) tab as in the following graphic:
22-Jul-2016
834/2016
3. Click Next.
The next wizard window opens.
4. Enter the port and host information for this step.
Listen/Record on port
Defines the port on which the client communicates to DevTest. 8001 is typical, but you
can use another port number.
Target host
Defines the name or IP address of the target host where the server runs. Leave blank if
you are going to select a Proxy pass through style.
Target port
Defines the target port number listened to by the server. Leave this field blank if you will
select a Proxy passthrough style.
Defaults: 80 (HTTP) and 443 (HTTPS)
Recorder pass-through style
Specifies how the VS Image Recorder acts during recording. The choices are Gateway and
Proxy. If you select Proxy, the contents in Target host and Target port fields are cleared
and the fields become disabled. This choice affects how the client connects in the
recording mode.
If VS Image Recorder listens in a gateway mode, the client must send HTTP requests
directly to the recorder and not to the server. If the client is a browser, the URL
contains the host and port of the recorder instead of the host and port of the server.
If VS Image Recorder listens in a proxy mode, the client must specify the recorder host
22-Jul-2016
835/2016
22-Jul-2016
836/2016
22-Jul-2016
837/2016
in a two-way SSL environment, see Virtualizing Two-way SSL Connections (see page
840).
5. Click Next.
The VS Image Recorder starts recording the traffic. The assigned port and service target
display on this window.
6. To send the requests to the server routed through the VS Image Recorder to start recording
traffic, use your HTTP client.
As the VS Image Recorder records transactions, the dynamic display statistics on the lower
portion of the window increase. The options and dynamic display statistics include:
Total conversations
Displays the number of conversations recorded.
Total transactions
Displays the number of transactions recorded.
Clear
Clears the list of currently recorded transactions.
7. When you have completed the recording, click Next to move to the next step.
If you click Next and no transactions were recorded, an error message appears. Click OK to
continue recording.
Note: If the transactions are not recorded, you could have a port conflict. The client
sends transactions to the application instead of the Virtual Service Recorder. If
another service is using that port, either stop that service or change the port setting
so there is no longer a conflict.
The Transactions tab displays a list of the most recent transactions recorded. On this list of
transactions, you can double-click a transaction and can see a dialog showing the content of
the transaction.
8. Verify the base path and update it if necessary.
9. To require a bind-to-port step before processing requests, select the A separate bind-to-port
step is required check box.
10. Click Next.
11. Do not select any value for the data protocol on the next window and click Next.
22-Jul-2016
838/2016
22-Jul-2016
839/2016
Note: To save the settings on this recording to load into another service image
recording, click Save
above the Finish button.
Note: To use the default DevTest keystore (see webreckeys.ks in the installation directory)
as the server-side keystore, extract the DevTest certificate from the DevTest keystore and
add it to the client truststore. The DevTest certificate is a self-signed certificate and not a
certificate that a CA authority issues. This workaround only works when the client accepts
self-signed certificates.
22-Jul-2016
840/2016
22-Jul-2016
841/2016
Note: This transport protocol is for WebSphere MQ in native mode. If you are using
WebSphere MQ in JMS mode, we recommend that you use the JMS transport protocol (see
page 851).
Prerequisites: Using DevTest with this application requires that you make one or more files available
to DevTest. For more information, see Third-Party File Requirements (see page 1446).
Proxy recording is a common method for recording a messaging application.
The main components of proxy recording are:
The client
The service
The proxy queues
The live queues
22-Jul-2016
842/2016
The VSE recorder is inserted into the message flow between the client and the service. Each request
message goes through the recorder before it reaches the service. Each response message goes
through the recorder before it reaches the client.
A channel is the pairing of a proxy queue and a live queue.
The proxy request queue and the live request queue form a request channel.
The proxy response queue and the live response queue form a response channel.
The following graphic shows the request channel and the response channel in a proxy recording.
22-Jul-2016
843/2016
A proxy recording can have multiple request channels and multiple response channels.
In this procedure, you select an asset (see page 449) for each queue.
Follow these steps:
1. In the Basics tab of the Virtual Service Image Recorder, set the transport protocol to IBM MQ
Native. Be sure to configure the service image and virtual service model.
2. Click Next.
The proxy recorder setup page opens.
22-Jul-2016
844/2016
The proxy recorder setup page has basic and advanced parameters. To display the advanced
parameters, click PRO at the top of the editor.
Each channel must have a unique name.
3. Select the queue assets for the Proxy Request, Live Request, Proxy Response, and Live
Response lists. If the assets have not been created, you can create them from this page. You
can also edit assets from this page.
4. (Optional) Click the plus ( + ) icons to add request channels and response channels.
5. (Optional) Select the Correlation Scheme check box and specify which scheme (see page 1632)
you want. Each response channel can have a different correlation scheme.
6. Click Next to start the recording session.
The recording feedback page opens.
22-Jul-2016
845/2016
The table in the Summary tab lists each request channel and response channel. Each row
includes the channel name, the selected destination asset, the number of messages that have
flowed through the channel, and the status.
You can click a cell in the Destination column to see the proxy destination that is associated
with the channel.
The bottom of the page shows the number of pending transactions, the number of sessions,
and the total number of transactions.
If an error prevents the recording session from starting, a dialog opens and you return to the
proxy recorder setup page.
Errors can also occur during the recording session. Errors that are associated with a specific
request channel or response channel appear in the Status column. The status icon turns red,
and a tooltip displays the error message. More general errors appear at the top of the
recording feedback page.
You can use the runtime monitor to view the assets that are used in real time. For information
about how the runtime monitor works, see IBM MQ Native Send Receive Step (see page 1924).
7. Exercise the target service.
8. When the service completes, click Next to finish the recording.
9. Specify any data protocols and click Next.
10. (Optional) Save a recording session file.
11. Click Finish.
The service image (see page 986) and the virtual service model (see page 1012) are created.
22-Jul-2016
846/2016
Right-click the VirtualServices node on the Project panel and select Create a VS Image, by
Recording.
The Virtual Service Image Recorder opens.
2. Complete the Basics (see page 828) tab as in the following graphic:
3. Click Next.
The recording mode selection step opens, with one of the following options selected:
Proxy Mode
Proxy mode is the only true recording mode that VSE supports. Proxy mode provides the
following options:
Generate the service from the Live queues
Generate the service using the Proxy queues
22-Jul-2016
847/2016
Message ID to Correlation ID: The request Message ID must be the same as the
22-Jul-2016
848/2016
22-Jul-2016
6.
849/2016
6. Click Next.
The Destination Info tab opens.
7. Enter your proxy and live queue names, and select the queue type.
The Create Proxy Queue check box lets you create a temporary queue on the fly to be used as
a proxy queue. Select this option if you did not manually create the proxy queue on
WebSphere MQ.
8. Click the Connection setUp tab.
9. Enter the connection parameters used to connect to the MOM.
These connection parameters are internally saved.
The Advanced tab at the bottom of the Connection setUp tab includes the following subtabs:
Environment
Lets you add, delete, and specify values for more MQ environment settings.
MQ Exits
Lets you point to MQ exits for Security, Send, and Receive.
10. To define an optional separate set of connection information for when your proxy queues are
on a different queue manager from your live queues, click the Proxy Connection setUp tab.
11. Define the connection details for the response destinations on which to listen for messages.
12. Define the proxy queue on which the client application will receive these responses.
Remember that multiple responses are possible for a request. To register a set of
response proxy queues, click Add
Select the Use for Unknown Responses check box before registering the response queue
to use for unknown requests.
To define a temporary destination, select the Use temporary queue/topic check box.
Selecting this option disables the destination name and proxy destination name fields and
marks the response listener you are adding as a temporary response. The destination
name is blank.
A "temporary" destination in messaging is a destination that is created on demand for a
messaging client. A temporary destination is typically used in request/response scenarios.
DevTest supports using a temporary queue for the responses, but only supports one
concurrent transaction with a temporary queue at a time.
13. Click Next.
The Destination List tab opens.
14. Click the Current Connection Info tab and verify that the connection information is correct.
15. The information that is shown on the Current Connection Info tab is copied from the
connection information that you gave earlier. You might want to change it in a rare case when
the response connection information is different.
22-Jul-2016
16.
850/2016
Note: To save the settings on this recording to load into another service image
recording, click Save
above the Finish button.
20. Click Finish to close the window and store the image.
21. Review and save the VSM that was generated in the main window.
22-Jul-2016
851/2016
Prerequisites: Using DevTest with this application requires that you make one or more files available
to DevTest. For more information, see Third-Party File Requirements (see page 1446).
Basic Proxy Recording
Proxy recording is a common method for recording a messaging application.
The main components of proxy recording are:
The client
The service
The proxy queues
The live queues
The VSE recorder
The following graphic shows these components. The message-oriented middleware (MOM) is the
platform on which messages are exchanged.
The VSE recorder is inserted into the message flow between the client and the service. Each request
message goes through the recorder before it reaches the service. Each response message goes
through the recorder before it reaches the client.
A channel is the pairing of a proxy queue and a live queue.
The proxy request queue and the live request queue form a request channel.
22-Jul-2016
852/2016
The proxy response queue and the live response queue form a response channel.
The following graphic shows the request channel and the response channel in a proxy recording.
A proxy recording can have multiple request channels and multiple response channels.
In this procedure, you select an asset (see page 449) for each queue.
Follow these steps:
1. In the Basics tab of the Virtual Service Image Recorder, set the transport protocol to JMS. Be
sure to configure the service image and virtual service model.
2. Click Next.
The proxy recorder setup page opens.
22-Jul-2016
853/2016
The proxy recorder setup page has basic and advanced parameters. To display the advanced
parameters, click PRO at the top of the editor.
Each channel must have a unique name.
3. (Optional) To generate a virtual service model that operates on live queues (see page 856)
instead of proxy queues, display the advanced parameters and set the VSE Type field to Live.
4. Select the queue assets for the Proxy Request, Live Request, Proxy Response, and Live
Response lists. If the assets have not been created, you can create them from this page. You
can also edit assets from this page.
5. (Optional) Click the plus ( + ) icons to add request channels and response channels.
6. (Optional) Select the Correlation Scheme check box and specify which scheme (see page 1632)
you want. Each response channel can have a different correlation scheme.
7. Click Next to start the recording session.
The recording feedback page opens.
22-Jul-2016
854/2016
The table in the Summary tab lists each request channel and response channel. Each row
includes the channel name, the selected destination asset, the number of messages that have
flowed through the channel, and the status.
You can click a cell in the Destination column to see the proxy destination that is associated
with the channel.
The bottom of the page shows the number of pending transactions, the number of sessions,
and the total number of transactions.
If an error prevents the recording session from starting, a dialog opens and you return to the
proxy recorder setup page.
Errors can also occur during the recording session. Errors that are associated with a specific
request channel or response channel appear in the Status column. The status icon turns red,
and a tooltip displays the error message. More general errors appear at the top of the
recording feedback page.
You can use the runtime monitor to view the assets that are used in real time. For information
about how the runtime monitor works, see JMS Send Receive Step (see page 1886).
8. Exercise the target service.
9. When the service completes, click Next to finish the recording.
10. Specify any data protocols and click Next.
11. (Optional) Save a recording session file.
12. Click Finish.
The service image (see page 986) and the virtual service model (see page 1012) are created.
22-Jul-2016
855/2016
856/2016
22-Jul-2016
857/2016
3. Change the recorder type from Proxy Recorder to TIBCO Monitor Recorder.
The proxy recorder setup page has basic and advanced parameters. To display the advanced
parameters, click PRO at the top of the editor.
4. Select the queue assets for the Receive Destination list and the Send Destination list. If the
assets have not been created, you can create them from this page. You can also edit assets
from this page.
5. (Optional) Click the plus ( + ) icons to add request queues and response queues.
6. (Optional) Select the Correlation Scheme check box and specify which scheme (see page 1632)
you want.
7. Click Next to start the recording session.
The recording feedback page opens.
The table in the Summary tab contains a list of each request channel and response channel.
Each row includes the channel name, the selected destination asset, the number of messages
that have flowed through the channel, and the status.
The bottom of the page shows the number of pending transactions, the number of sessions,
and the total number of transactions.
You can use the runtime monitor to view the assets that are used in real time. For information
about how the runtime monitor works, see JMS Send Receive Step (see page 1886).
8. Exercise the target service.
9. When the service is complete, click Next to finish the recording.
10. Specify any data protocols and click Next.
11. (Optional) Save a recording session file.
12. Click Finish.
The service image and the virtual service model are created.
JMS Topic Recorder
The JMS topic recorder lets you record transactions by listening on request and response topics.
As shown in the following graphic, the recorder sits outside of the application's message flow entirely
and simply "listens in" to the message traffic.
22-Jul-2016
858/2016
The message-oriented middleware (MOM) is the platform on which messages are exchanged.
The live service and the recorder can both listen to the request topic without interfering with each
other.
Similarly, the client and the recorder can both listen to the response topic without interfering with
each other.
A request channel is composed of the following parts:
Channel name
JMS receive operation
This operation is what receives messages from the request topic.
A response channel is composed of the following parts:
Channel name
JMS send operation
This operation is what sends messages to the response topic during playback.
Correlation scheme
As shown in the following graphic, the VSE service takes the place of the live service during playback.
You must shut down the live service so that it does not interfere with the handling of requests.
22-Jul-2016
859/2016
Live invocation mode is not supported. The virtual service model that is generated does not include a
passthrough step.
Follow these steps:
1. In the Basics tab of the Virtual Service Image Recorder, set the transport protocol to JMS. Be
sure to configure the service image and virtual service model.
2. Click Next.
The proxy recorder setup page opens.
3. Change the recorder type from Proxy Recorder to Topic Recorder.
The proxy recorder setup page has basic and advanced parameters. To display the advanced
parameters, click PRO at the top of the editor.
4. Select the topic assets for the Receive Destination list and the Send Destination list. If the
assets have not been created, you can create them from this page. You can also edit assets
from this page.
5. (Optional) Click the plus ( + ) icons to add request channels and response channels.
6. (Optional) Select the Correlation Scheme check box and specify which scheme (see page 1632)
you want.
7. Click Next to start the recording session.
The recording feedback page opens.
The table in the Summary tab contains a list of each request channel and response channel.
Each row includes the channel name, the selected destination asset, the number of messages
that have flowed through the channel, and the status.
The bottom of the page shows the number of pending transactions, the number of sessions,
and the total number of transactions.
You can use the runtime monitor to view the assets that are used in real time. For information
about how the runtime monitor works, see JMS Send Receive Step (see page 1886).
8. Exercise the target service.
22-Jul-2016
860/2016
Right-click the VirtualServices node on the Project panel and select Create a VS Image, by
Recording.
The Virtual Service Image Recorder opens.
2. Complete the Basics (see page 828) tab as in the following graphic:
22-Jul-2016
861/2016
3. Click Next.
The recording mode selection step opens with one of the following options selected:
Proxy Mode
Proxy mode is the only true recording mode that VSE supports. Proxy mode provides the
following options:
Generate the service from the Live queues
Generate the service using the Proxy queues
Proxy mode allows the use of proxy destinations to be set up on the message bus. The
client application is configured to put messages on those proxy destinations and DevTest
records them and forwards to the real destination. The same thing happens on the
response side. DevTest is configured to listen on the real response destination, get the
message, and forward it to the response proxy destination. This mode can behave
differently if you enable temporary destinations, making the response side automated.
Import Mode
This mode for recording virtual services is available if you specify a raw traffic file in the
Import traffic field on the initial recording window. In import mode, you can specify extra
information about which request and response queues were detected in the raw traffic
file. You can also select to skip the request response steps.
4. To record in proxy mode, complete the following fields:
22-Jul-2016
862/2016
4.
DevTest Solutions - 9.5
863/2016
Select the Use for Unknown Responses check box before registering the response queue
to use for unknown requests.
To define a temporary destination, select the Use temporary queue/topic check box.
Selecting this option disables the destination name and proxy destination name fields and
marks the response listener you are adding as a temporary response. The destination
name is blank.
A "temporary" destination in messaging is a destination that is created on demand for a
messaging client. A temporary destination is typically used in request/response scenarios.
DevTest supports using a temporary queue for the responses, but only supports one
concurrent transaction with a temporary queue at a time.
13. Click the Current Connection Info tab and verify that the connection information is correct.
The information that appears on this tab is copied from the connection information that was
given earlier. You could change it in a rare case when the response connection information is
different.
14. Click Next to start recording.
The names of the destinations to which VSE is listening display.
The Pending Transactions field displays the number of transactions that are stored in the
pending transaction buffer waiting for more responses. The transactions are closed either by
reaching the maximum pending transaction count or by using the Disable Multiple Responses
option. As the transactions close, they are moved from the pending transaction buffer to the
total transaction buffer.
15. Run the client that adds messages to the request proxy queue.
VSE copies the messages to the real request queue. The server acquires those messages from
there and sends responses to the response queue. Again, VSE acquires those messages and
copies them to the response proxy queue, where the client is listens.
As the transactions are recorded, the message count increases and Total sessions and Total
transactions counts increase on the Virtual Service Image Recorder window. At the end of
recording, all the requests have gone through the same request queue. About half of the
responses have returned through temporary queues, and the other half have returned
through the nontemporary response queue.
When the run is complete, you may see the count of messages on the response queues one
22-Jul-2016
864/2016
Note: To save the settings on this recording to load into another service image
recording, click Save
above the Finish button.
17. Click Finish to close the window and store the image.
18. Review and save the VSM that is generated in the main window.
22-Jul-2016
865/2016
The proxy recorder setup page has basic and advanced parameters. To display the advanced
parameters, click PRO at the top of the editor.
Each channel must have a unique name.
3. (Optional) To generate a virtual service model that operates on live queues (see page 856)
instead of proxy queues, display the advanced parameters and set the VSE Type field to Live.
4. Select the queue assets for the Proxy Request, Live Request, Proxy Response, and Live
Response lists. If the assets have not been created, you can create them from this page. You
can also edit assets from this page.
5. (Optional) Click the plus ( + ) icons to add request channels and response channels.
6. (Optional) Select the Correlation Scheme check box and specify which scheme you want. Each
response channel can have a different correlation scheme.
22-Jul-2016
7.
866/2016
The table in the Summary tab lists each request channel and response channel. Each row
includes the channel name, the selected destination asset, the number of messages that have
flowed through the channel, and the status.
You can click a cell in the Destination column to see the proxy destination that is associated
with the channel.
The bottom of the page shows the number of pending transactions, the number of sessions,
and the total number of transactions.
If an error prevents the recording session from starting, a dialog opens and you return to the
proxy recorder setup page.
Errors can also occur during the recording session. Errors that are associated with a specific
request channel or response channel appear in the Status column. The status icon turns red,
and a tooltip displays the error message. More general errors appear at the top of the
recording feedback page.
You can use the runtime monitor to view the assets that are used in real time. For information
about how the runtime monitor works, see RabbitMQ Send Receive Step (see page 1928).
8. Exercise the target service.
9. When the service completes, click Next to finish the recording.
10. Specify any data protocols and click Next.
11. (Optional) Save a recording session file.
12. Click Finish.
22-Jul-2016
867/2016
Right-click the VirtualServices node on the Project panel and select Create a VS Image, By
recording.
The Virtual Service Image Recorder opens.
2. Select Java as the transport protocol on the Basics (see page 828) tab.
3. Click Next.
The Select Java classes to virtualize window opens.
4. To move selected agents between the following columns, use the provided arrows:
Available Online Agents
Lists the online agents that are available to be connected.
Connected Agents
Lists contains the online or offline agents that are connected for the virtual service model.
The offline agents display in a gray italic font. You can select the agents from the Available
Online Agents list.
When you select an agent from either list, the host name and the main class appear.
5. To add an agent that is not in the list, type the agent name in the field above the list of
connected agents and click Add Agent
.
This mechanism is provided for adding any offline agents that were not previously in the
connected list. The agent name cannot be empty or already present in the connected agents
list. If the agent name entered is present in the online agents list, it is moved from the
available online agents to the connected agents list.
6. To select a class by searching, complete the following steps:
22-Jul-2016
868/2016
c. Select a class.
d. Click the right arrow.
9. To add a protocol to the recording, double-click Protocols and select the protocol to record.
10. Shut down the system under test.
11. Click Next.
The Recording Has Begun page opens.
12. Restart the system under test.
Note: Shutting down and restarting the system under test is optional. Restarting
helps to ensure that VSE captures any initial traffic that occurs when the system
under test initializes.
After the system under test starts, a list of the most recent transactions displays. To see the
content of a selected transaction, double-click it.
22-Jul-2016
13.
869/2016
Note: To save the settings on this recording to load into another service image
recording, click Save
above the Finish button.
Note: The JDBC (Driver Based) transport protocol is not supported. This functionality is
replaced by agent-based JDBC virtualization (see page 748).
For more information about prerequisites and preparatory steps, see Preparing to Virtualize JDBC
(see page 873).
Follow these steps:
1. To start recording a new virtual service image, complete one of the following steps:
Right-click the VirtualServices node on the Project panel and select Create a VS Image, by
Recording.
The Virtual Service Image Recorder opens.
2. Complete the Basics (see page 828) tab as in the following graphic:
22-Jul-2016
870/2016
2.
Image of the Basics tab on the Virtual Service Image Recorder for JDBC transport protocol
3. Click Next.
The endpoint configuration window opens.
4. Set up the simulation host and range of ports (default is 2999), as appropriate.
JDBC VSE supports multiple endpoints during recording and playback. In the recorder and the
JDBC listen step editor, there is a table of Driver Host, Base Port, and Max Port. When Base
Port and Max Port differ, a unique endpoint is created for the base port and the max port and
each port between.
5. Click Next to connect to the JDBC Simulation server.
To stop trying to connect, click Cancel in the status window.
6. Select the connection URLs and users to be recorded in the SQL Activity tab.
The SQL Activity tab shows the ten most recent statements executed (and how many times
they ran) for every unique connection URL and database user combination. This display
refreshes approximately every five seconds.
To put the selected connection string and user in the URL and user fields at the bottom of
the panel, click To URL.
To put the URL in the URLs to Record list, click Add.
7. Click the Loaded Drivers tab.
The Loaded Drivers tab lists the JDBC drivers that are installed and registered in the system
under test.
22-Jul-2016
871/2016
7.
Select a driver and click To URL to put a regular expression that matches any connection
through that driver in the URL field at the bottom of the panel.
Click Add to add the pattern to the URLs to Record list.
URLs to Record
Lists the URLs added from the SQL Activity list or the URL/User entry fields. To delete an
entry, select it and click Remove.
User
An unnamed area below the URLs to Record field where you can include a database user
with the URL. If you leave this field blank, the recording applies to all users connecting to
the URL.
Note: To enable the Add button, supply a connection URL in the first field and a
user name in the next field.
The bottom section shows the list of connection URL and database user combinations that are
recorded. The URL can be a regular expression. This list is typically initially empty unless the
state attribute is set to RECORD on a simulation connection URL for DataSource style systems
under test.
If a driver is selected from the drivers list, you can use the To URL button to copy a generic
regular expression that matches the connection URLs for that driver to the URL entry field. If
the connection URL (top level) node in the activity tree is selected, you can use the To URL
button to copy the URL and user to the URL and user entry fields. Also, to add the connection
URL and user directly to the recording list, use the Add button to the right of the activity tree.
Connection URLs can be either exact or a regular expression that matches connection
requests and can be added to the recording list with or without a database user. The absence
of a database user matches any user attempting to connect. If the Add button to the right of
the URL and user fields is disabled, the recording list probably already covers the URL and user
combination.
8. Click Next when the recording list contains all the URLs and users to record.
The Recording has begun window opens.
The options and dynamic display statistics include:
Total conversations
Displays the number of conversations recorded.
Total transactions
Displays the number of transactions recorded.
Clear
Clears the list of currently recorded transactions.
The number of Total conversations and Total transactions increases with the number of
transactions recorded.
22-Jul-2016
872/2016
Note: If no transactions are recorded, you could have a port conflict. The client
sends transactions to the application instead of the Virtual Service Recorder. If
another service is using that port, either stop that service or change the port setting
so there is no longer a conflict.
If you have performance issues, it is possible that the target database is responding slowly.
Check the user.home\lisatmp\tmanager.log file for debug messages that report the query
execution time.
For example:
2009-07-0115:35:39,248[AWT-EventQueue-0]DEBUGcom.itko.lisa.vse.stateful.
model.
SqlTimer-Exectime72ms:SELECTTRAFFIC_ID,LAST_MODIFIED,SERVICE_INFO,CRE
ATED_ON,NOTES,UNK_CONV_RESPONSE,UNK_STLS_RESPONSEFROMSVSE_TRAFFIC
If the query time exceeds a threshold, warning messages like the following are generated:
2009-07-0115:17:11,161[AWT-EventQueue-0]WARNcom.itko.lisa.vse.stateful.
model.
SqlTimer-SQLquerytookalongtime(112ms):SELECTTRAFFIC_ID,LAST_MODIFI
ED,SERVICE_INFO,CREATED_ON,NOTES,UNK_CONV_RESPONSE,UNK_STLS_RESPONSEFROM
SVSE_TRAFFIC
Note: To save the settings on this recording to load into another service image
recording, click Save
above the Finish button.
Note: The JDBC (Driver Based) transport protocol is not supported. This functionality is
replaced by agent-based JDBC virtualization (see page 748).
22-Jul-2016
873/2016
22-Jul-2016
874/2016
Note: The URL element must come last. Everything following "url=" is passed unchanged to
the underlying driver. DevTest supports passing extra information to the underlying driver
by embedding it in the real URL.
22-Jul-2016
875/2016
22-Jul-2016
876/2016
Assume an application uses two JDBC connections, and you want to virtualize both of them. Also
assume the application uses drivers directly.
Specify com.itko.lisa.vse.jdbc.driver.Driver for each connection, with the appropriate underlying
parameters such as driver and URL for each. For the first connection, you could specify
jdbcSimPort=3000 and for the second you could use jdbcSimPort=3001. Your configuration could
look like:
connection1.url=jdbc:lisasim:driver=org.apache.derby.jdbc.ClientDriver;
jdbcSimPort=3000;url=jdbc:derby://localhost:1527/sample;create=true
connection2.url=jdbc:lisasim:driver=org.apache.derby.jdbc.ClientDriver;
jdbcSimPort=3001;url=jdbc:derby://localhost:1527/sample2;create=true
Although you must still record separately, you can deploy both services simultaneously, and can start
and stop them independently.
Right-click the VirtualServices node on the Project panel and select Create a VS Image, by
Recording.
The Virtual Service Image Recorder opens.
2. Complete the Basics (see page 828) tab as in the following graphic:
22-Jul-2016
877/2016
3. Click Next.
4. Enter the information for both the client and the server, select your delimiters, and add SSL
parameters.
Listen/Record on port
Defines the port on which the client communicates to DevTest.
Target host
Defines the name or IP address of the target host where the server runs.
Target port
Defines the port number of the target host where the server runs.
Treat request as text
Specifies whether the request is treated as text. For more information, see Virtualize TCP
(see page 715).
Request Encoding
Lists the available request encodings on the machine where DevTest Workstation is
running. The default is UTF-8.
Treat response as text
Specifies whether the response is treated as text. For more information, see Virtualize TCP
(see page 715).
22-Jul-2016
878/2016
Response Encoding
Lists the available response encodings on the machine where DevTest Workstation is
running. The default is UTF-8.
Use SSL to server
Specifies whether DevTest uses HTTPS to send the request to the server.
Selected: DevTest sends an HTTPS (secured layer) request to the server.
If you select Use SSL to server, but you do not select Use SSL to client, DevTest uses an
HTTP connection for recording. DevTest then sends those requests to the server using
HTTPS.
Cleared: DevTest sends an HTTP request to the server.
Use SSL to client
Specifies whether to use a custom keystore to play back an SSL request from a client. This
option is only enabled when Use SSL to server is selected.
Values:
Selected: You can specify a custom client keystore and a passphrase. If these
parameters are entered, they are used instead of the hard-coded defaults.
Cleared: You cannot specify a custom client keystore and a passphrase.
SSL keystore file
Specifies the name of the keystore file.
Keystore password
Specifies the password associated with the specified keystore file.
5. Click Next to configure the request and response delimiters that will be used during recording.
6. When your recording is complete, click Next.
7. Select a response data protocol if the response is encrypted, compressed, or otherwise
encoded.
8. The recorder attempts to detect message delimiters that tell DevTest when it has read a
complete request or response. Confirm, or correct, these delimiters on this screen.
9. The recorder verifies request and response bodies to ensure that, if they are marked as text,
that they are text. If they are not, the type is switched to binary.
Note: To save the settings on this recording to load into another service image
22-Jul-2016
879/2016
9.
The TCP/IP protocol supports a live invocation step. To enable the live invocation step, select
a response protocol. If you do not select a response protocol, no live invocation step is
included in the VSM.
22-Jul-2016
880/2016
22-Jul-2016
881/2016
This example virtualizes DEMOGETB on CICSTS41. The example uses the DevTest agent, running in
CICSA, communicating with the LPAR agent, communicating with the VSE server. We first run the
CICS transaction to record the CICS LINK to DEMOGETB. We then use that recording to virtualize the
CICS LINK.
22-Jul-2016
882/2016
The Virtual Service Image Recorder Basics tab contains the name of the service image (DEMOGETB.
vsi), the VSM (DEMOGETB.vsm), and the transport protocol of CICS LINK.
The CICS Programs to Virtualize panel displays next. For detailed information about this panel, see
Using the CICS Programs to Virtualize Panel (see page 890).
Recording starts when the Next button is clicked. During recording, we run transaction DEM3 to
invoke DEMOGETB with a CICS LINK.
22-Jul-2016
883/2016
Screenshot of a CICS screen running the demo for the example recording.
As the following graphic shows, after it runs once, VSE records one transaction.
22-Jul-2016
884/2016
Screenshot of VSI recorder with one transaction recorded from the example CICS LINK recording.
On the next panel, VSE adds the CICS Copybook data protocol to both the request and response
sides.
The following graphic shows the copybook mapping XML file to use in this example. This file defines
the mapping for DEMOGETB and it indicates to use DEMOGETB.txt as the copybook if a request for
the program DEMOGETB exists.
22-Jul-2016
885/2016
Copybook mapping XML file contents for the CICS LINK demo recording.
As the following example shows, DEMOGETB.txt contains the COBOL copybook definition:
Copybooks/DEMOGETB.txt
05DEMOGETB-COMMAREA.
10DEMOGETB-RETURNPICX.
10DEMOGETB-MESSAGEPICX(70).
10BALANCE-REC.
15BALANCE-ACCOUNT-NBRPICX(8).
15FILLERPICX.
15BALANCE-BALANCEPICX(14).
15FILLERPICX.
15BALANCE-AVERAGEPICX(14).
On the next panel, the folder that has DEMOGETB.txt is specified, and the mapping XML. The
codepage is changed to IBMO37.
22-Jul-2016
886/2016
Screenshot of the Configure How to Parse the Copybook Payloads panel for the CICS LINK recording example.
Screenshot of the request data arguments for the CICS LINK recording example.
The copybook has also formatted the response. The following graphic shows the response to return
when using virtualization:
22-Jul-2016
887/2016
Screenshot of the response to send back when using virtualization for the CICS LINK recording example.
Example
In this example, the VSAM file DEMOBAL is made unavailable, and program DEMO3 is run. DEMO3
fails because of the unavailability of DEMOBAL.
22-Jul-2016
888/2016
Screenshot of CICS screen for the CICS LINK example, showing the SUT being unavailable.
22-Jul-2016
889/2016
Screenshot of the CICS screen for the CICS LINK recording example, with success having VSE virtualize the SUT.
22-Jul-2016
890/2016
The CICS Programs to virtualize selection panel has two main areas.
Available Programs
The Available Programs area lets you explore CICS regions that are connected to DevTest with the
DevTest CICS Agent and see the programs that are defined there.
You can explore the known CICS regions and programs by:
LPAR (z/OS Logical Partition)
CICSPlex
User-defined grouping
Region
VTAM APPLIDs (application IDs) identify the CICS regions.
Program Name Prefix
Defines the prefix that the recorder uses to filter which programs to display. The Available
Programs area only displays programs that begin with the specified prefix. Always add a program
prefix.
Max
Defines the maximum number of programs to display from one CICS region.
22-Jul-2016
891/2016
The CICS Programs to virtualize selection panel with the CICS LINK recording example environment shown.
Clicking LPAR shows the known LPARs (in this case, S0W1).
Clicking the plus sign next to S0W1 shows the known CICS regions in SOW1: CICST242, CICSTS32,
CICSTS41, and CICSTS42.
Clicking the plus sign next to CICSTS41 shows the known programs that match the prefix DEMOGET
on CICSTS41 (DEMOGETB and DEMOGETN).
The list under SOW1 also contains DEMOGETB and DEMOGETN because they are programs that were
found in the LPAR.
22-Jul-2016
892/2016
The CICS Programs to virtualize selection panel with nodes expanded to show more detail.
Clicking CICSPlex shows the known CICSPlexs and reveals DEVPLEX1 and DEVPLEX2.
Clicking the plus sign next to DEVPLEX1 shows the known CICS regions: CICST242, CICSTS41, and
CICSTS42.
Clicking the plus sign next to CICSTS41 shows the known programs that match the prefix on CICSTS41
(DEMOGETB and DEMOGETN).
The list under DEBPLEX1 also contains DEMOGETB and DEMOGETN because they are programs that
were found in the CICSPlex.
Note: For a CICS region to be a member of a CICSPlex group, you must modify a DevTest
CICS agent user exit. For more information, see CICS Agent User Exits (see page 1388).
22-Jul-2016
893/2016
The CICS Programs to virtualize selection panel with User Groups expanded.
Clicking User Group shows the known user groups and reveals GROUP1 and GROUP2.
Clicking the plus sign next to GROUP1 shows the known CICS regions: CICST242, CICSTS41, and
CICSTS42.
Clicking the plus sign next to CICSTS41 shows the known programs that match the prefix on CICSTS41
(DEMOGETB and DEMOGETN).
The list under GROUP1 also contains DEMOGETB and DEMOGETN because they are programs that
were found in the user group.
Note: For a CICS region to be a member of a user group, you must modify a DevTest CICS
agent user exit. For more information, see CICS Agent User Exits (see page 1388).
22-Jul-2016
894/2016
Clicking Region shows the known CICS Regions and reveals CICST242, CICSTS32, CICSTS41, and
CICSTS42.
Clicking the plus sign next to CICSTS41 shows the groups that contain this CICS region.
Clicking the plus sign next to S0W1 (the LPAR group of which this region is a member) shows the
known programs that match the prefix on CICSTS41 (DEMOGETB and DEMOGETN).
The list under GROUP1 also contains DEMOGETB and DEMOGETN because they are programs that
were found in the user group.
22-Jul-2016
895/2016
When the program information is retrieved by clicking a CICS region, the grouping by Program folder
appears.
Clicking Program reveals all known CICS programs; DEMOGETB and DEMOGETN in this case.
Clicking the plus sign next to DEMOGETB expands the known CICS regions and groups containing
DEMOGETB.
Programs to Virtualize
To add programs, double-click them and they appear in the Programs to Virtualize panel. Or, click
Add
When a program is listed in the Programs to Virtualize panel, double-click it to add filters and
groupings.
In this example, program DEMOGETB is virtualized in CICS region CICSTS41. Group S0W1 and LPAR
are ignored unless the Any Region check box is selected.
Filters allow you to specify which of the CICS LINKs to DEMOGETB are virtualized.
22-Jul-2016
896/2016
Screenshot of the Add or Edit Programs window for CICS LINK recordings, with Any Region selected.
Selecting the Any Region check box clears the Region text box and indicates that DEMOGETB will be
virtualized in ALL CICS regions in LPAR group S0W1 (all CICS regions residing in LPAR S0W1).
22-Jul-2016
897/2016
Screenshot of the Add or Edit Programs window for CICS LINK recordings, with filters entered.
In the previous graphic, filters are used to narrow the programs to virtualize.
Link Transaction ID
Indicates that CICS LINKs to DEMOGETB are virtualized only if they are coded with TRANSID
(TRN1).
Link System ID
Indicated that CICS LINKs to DEMOGETB are virtualized only if coded with SYSID(SYSB).
EIB Transaction ID
Indicates that CICS LINKs to DEMOGETB are virtualized only if executed while running under the
transaction DEM3.
User ID
Indicates that CICS LINKs to DEMOGETB are virtualized only if executed while running under user
ID CICSUSR1.
22-Jul-2016
2.
898/2016
22-Jul-2016
899/2016
If the system under test receives requests that have a four-byte LLZZ length field at the
beginning of the request message, set the following property:
lisa.vse.ims.connect.llzz.request=true
If the system under test sends responses that have a four-byte LLZZ length field at the
beginning of the response message, set the following property:
lisa.vse.ims.connect.llzz.response=true
If the system under test uses copybooks for parsing the payloads, add the following
property:
lisa.vse.copybook.unknown.passthrough=true
22-Jul-2016
900/2016
22-Jul-2016
7.
901/2016
7. When you see transactions have been recorded on the Virtual Service Image Recorder
window, click Next.
The data protocols window opens.
By default, the TransactionCode header field (if it exists) is set as the request operation. Also,
TransactionCode, DestinationId, and ClientId are added as arguments, if these fields exist in
the format file definition.
8. Add data protocols, including the Copybook data protocol if needed, and click Next.
The conversation starter window opens.
9. Click Next.
10. Select the options to display the VSM and VSI, then click Finish.
The Service Image Editor displays the IMS Connect service image.
Note: CA Service Virtualization supports IMS Connect recording and playback over SSL. The
only restriction is that it only supports one keystore file.
#-----------------------------------------------------------------------------------#TheIMSrequestmessage(IRM)headercontainsa28-bytefixed-format
#sectionthatiscommontoallmessagesfromallIMSConnectclientapplicatio
ns
#thatcommunicatewithIMSTM.
#-----------------------------------------------------------------------------------RequestHeaderCommon{
LLLLint;#totalmessagelengthI
RM+userdata
IRMFixedHeader{
LLshort;#IRM_LEN,totallength
oftheheadersegmentincludinguserheaderportion
ZZbyte;#IRM_ARCH
Flag0byte;#IRM_F0
UserExitIdstring(8);#IRM_ID
NakReasonCodebyte(2);#IRM_NAK_RSNCDE
Reserved1byte(2);#IRM_RES1
MessageTypebyte;#IRM_MessageType
WaitTimebyte;#IRM_TIMER
SocketConnectionTypebyte;#IRM_SOCT
EncodingSchemabyte;#IRM_ES
ClientIdbyte(8);#IRM_CLIENTID
}
}
#------------------------------------------------------------------------------
22-Jul-2016
902/2016
#-----------------------------------------------------------------------------------#Formatofdatasegmentsofrequestmessage
#-----------------------------------------------------------------------------------RequestPayloadSegment{
LLshort;
ZZbyte(2);
Databyte(LL:inclusive);
}
#-----------------------------------------------------------------------------------#Formatofheaderforresponsemessage.Someresponseswillhaveit,somewon't
#-----------------------------------------------------------------------------------ResponseMessageHeader{
LLLLint;#followedbymultipleR
esponsePayloadSegment
}
#-----------------------------------------------------------------------------------#Formatofdatasegmentsofrequestmessage
#-----------------------------------------------------------------------------------ResponsePayloadSegment{
LLshort;
ZZbyte(2);
Databyte(LL:inclusive);
}
When the file is created and saved in the Data folder, it appears in the IMS Format file field in the
recorder. You can select the format file for applications that use nondefault request headers.
22-Jul-2016
903/2016
3.
904/2016
Prerequisites: Using DevTest with this application requires that you make one or more files available
to DevTest. For more information, see Third-Party File Requirements (see page 1446).
To record JCo IDoc service images:
1. Select JCo IDoc Protocol as the transport protocol on the Basics tab of the Virtual Service
Image Recorder.
2. Complete the fields on the Basics tab and click Next.
The next step in the recorder opens.
3. Complete the connection details fields.
22-Jul-2016
905/2016
3.
DevTest Solutions - 9.5
22-Jul-2016
5.
906/2016
5. Start the application that communicates with the SAP server and perform the activity that you
want to record.
6. When you see that transactions have been recorded on the Virtual Service Image Recorder
window, click Next.
The data protocols window opens.
The XML data protocol is selected on the request-side data protocols, because VSE stores the
IDocs as XML. Remove the XML data protocol, as it overrides the operation name that the JCo
IDoc protocol sets.
7. Click Next.
The conversation starter window opens.
8. Click Next.
9. Select the options to display the VSM and VSI, and click Finish.
The Service Image Editor displays the SAP JCo IDoc service image.
22-Jul-2016
907/2016
Right-click the VirtualServices node on the Project panel and select Create a VS Image, by
Recording.
The Virtual Service Image Recorder opens.
3. Complete the Basics (see page 828) tab as in the following graphic:
4. Click Next.
5. Enter the information for both the client and the server, select your encoding, and add SSL
parameters.
22-Jul-2016
908/2016
5.
Listen/Record on port
Defines the port on which the client communicates to DevTest.
Target host
Defines the name or IP address of the target host where the server runs.
Target port
Defines the port number that the server is listening on.
Treat request as text
Specifies whether the request is treated as text. For more information, see Preparing to
Virtualize TCP (see page 715).
Request Encoding
Lists the available request encodings on the machine where DevTest Workstation is
running. The default is UTF8.
Treat response as text
Specifies whether the response is treated as text. For more information, see Preparing to
Virtualize TCP (see page 715).
Response Encoding
Lists the available response encodings on the machine where DevTest Workstation is
running. The default is UTF8.
Use SSL to server
Specifies whether DevTest uses HTTPS to send the request to the server.
22-Jul-2016
909/2016
22-Jul-2016
7.
910/2016
8. The recorder attempts to detect message delimiters that tell DevTest when it has read a
complete request or response. Confirm, or correct, these delimiters on this screen.
22-Jul-2016
911/2016
9. After recording, the recorder verifies request and response bodies to ensure that, if they are
marked as text, that they are actually text. If they are not, the type is switched to binary.
More information:
Video about Opaque Data Processing, Part 1 (https://www.youtube.com/watch?v=CAJBF5GkiA&index=3&list=PLUo5-4tntpYJmxYRsnMkYSWPTdQ-vrKd8)
22-Jul-2016
912/2016
If Use SSL to the Server only is selected during recorder setup (and Use SSL to Client is not selected)
the client sends a plain HTTP connection to DevTest but the recorder sends an HTTPS (SSL secured
socket layer) request to the server application. In this case, client denotes the application or test case
sending the request.
By default, DevTest is configured to trust any certificate that is sent back from the server application.
You can override this behavior by setting the following properties in the local.properties file of the
installation directory to configure DevTest with a custom trust store:
lisa.net (http://lisa.net) .trustStore
The full path to the custom trust store file to use
lisa.net (http://lisa.net) .trustStore.password
The password for the custom trust store file. This property is automatically encrypted and
replaced by the lisa.net (http://lisa.net).t rustStore.password_enc property.
If the SSL server requests Client Authentication (two-way authentication), the recorder simulates a
client to complete the two-way client authentication. The SSL client-side keystore information that is
specified in the Use SSL to Server section of the recording wizard is used to send a certificate to the
SSL server. If SSL client-side keystore information was not specified, DevTest uses the following
properties in the local.properties file of the installation directory:
SSL keystore file
DevTest determines the custom client-side keystore file to use by looking up the following
properties (in order of importance):
ssl.client.cert.path
lisa.default.keystor
If neither of these properties exists, DevTest uses the default keystore file that is located at
{{LISA_HOME}}/webreckeys.ks.
DevTest determines the custom client-side keystore password to use by looking up the
following properties (in order of importance):
Keystore password
ssl.client.cert.pass.encrypted
ssl.client.cert.password
lisa.default.keystore.pass.encrypted
lisa.default.keystore.pass
If none of these properties exist, DevTest uses the password that is associated with the
default keystore file located at {{LISA_HOME}}/webreckeys.ks.
If the SSL client-side keystore contains multiple certificates, VSE uses the first one.
22-Jul-2016
913/2016
To record, the client or test case sends to the configured listen/record on port. The recorder Target
Host is the real SSL server and the Target port is the SSL port that the SSL server uses (typically, 443
or 8443).
During recording, the SSL handshake is between the client (recorder) and the SSL server. The server
sends its certificate and DevTest authenticates it. If the server requests client authentication, the
certificate that is in local.properties is used. If there is not a valid keystore in ssl.client.cert.path and
the server requests client authentication, then a bad_certificate situation is returned because there is
not a certificate for the client recorder to return to the server.
During recording, there is another SSL handshake is between the client (application or test case) and
the server (recorder). The recorder sends the certificate that is based on the SSL server-side keystore
information that is specified in the Use SSL to Client section of the recording wizard. If SSL server-side
keystore information was not specified, DevTest uses the following properties in the local.properties
file of the installation directory:
SSL keystore file
DevTest determines the custom server-side keystore file to use by looking up the following
properties (in order of importance):
ssl.server.cert.path
If this property does not exist, DevTest uses the default keystore file that is located at
{{LISA_HOME}}/webreckeys.ks.
Keystore password
DevTest determines the custom server-side keystore password to use by looking up the following
properties (in order of importance):
ssl.server.cert.pass.encrypted
ssl.server.cert.password
If none of these properties exist, DevTest uses the password that is associated with the
default keystore file that is located at {{LISA_HOME}}/webreckeys.ks.
If the SSL server-side keystore contains multiple certificates, CA Service Virtualization uses the first
one.
You can configure the recorder to request Client Authentication (two-way authentication) in the
Enable Client Certificate Authentication section of the recording wizard. If the Enable Client
Certificate Authentication check box is checked, DevTest is configured to request a client certificate
that is based on one of the following options:
Request Client Certificate
DevTest requests a client certificate during the SSL handshake without requiring that one is
sent back.
This is the default option when client certificate authentication is enabled.
Require Client Certificate
DevTest requires a valid client certificate during the SSL handshake.
22-Jul-2016
914/2016
Create a VSM
Follow these steps:
1. Open an existing project or create a project.
The project opens, and the left Project panel shows the project folder and its subfolders.
2. Right-click the VirtualServices subfolder node and select Create New VS Model.
Although you can also create a VS Model in another folder, it is a good practice to create it
under the VirtualServices folder.
The VS Model Editor window opens.
3. Browse to the location for the new VSM.
4. Enter a unique name for the VSM in the File name field. The extension is .vsm.
5. Click Save.
The new VSM opens.
When a VSM is open, the Commands menu shows menu items relevant to a VSM.
Open a VSM
Follow these steps:
1. Click Open on the toolbar, or select a project from the Open Recent project list on the Quick
Start window.
22-Jul-2016
915/2016
Note: A data protocol is also known as a data handler, a data protocol handler, or a DPH.
During recording, all transport protocols try to detect the request or response payload and default
appropriate data protocols on either the request or response side. The indicated data protocol
handlers are added for the following payloads:
SOAP: Web Services (SOAP) data protocol handler
XML: XML data protocol handler
HTML: No data protocol handler
Signed SOAP: A request-side WS-Security Request and a response-side WS-Security Response
data protocol handler
Encrypted SOAP: A request-side WS-Security Request and a response-side WS-Security Response
data protocol handler
SOAP Security: A request-side WS-Security Request and a response-side WS-Security Response
data protocol handler
You can add more data protocols, reorder the defaulted ones, or delete the defaults. If you are
creating a service image from request/response pairs, a raw traffic file, or means other than
recording and you have specified data protocol handlers, the defaults are not added.
You can chain data protocol data handlers to work with each other. For example, on the request side,
you can use the following data protocols together:
Delimited Text
Generic XML Payload Parser
Request Data Manager
916/2016
The Auto Hash Transaction Discovery data protocol has a simple purpose. As it is given requests to
handle, the standard Java hash code function is applied to the text version of the request body. The
resulting hash code value is then added as a new argument in the request named lisa.vse.auto.
hashDiscovery.
This ability can be helpful, especially in virtualizing messaging, for creating a reasonably unique value
to use for identifying conversations.
Because this protocol requires no configuration information, it does not present a window in the
recording wizard.
22-Jul-2016
917/2016
6. Click Next.
22-Jul-2016
918/2016
22-Jul-2016
919/2016
Terms
To better understand the Copybook data protocol, it is important to understand the following terms:
Copybook
A hierarchical structure that is used to define the layout of data. The copybook identifies the field
names, their lengths, and their relationships to each other.
Copybook File Definition
A file in plain text format containing a copybook.
Field
A single element in a copybook. A field encapsulates a name for, the length of, and the data type
for a single logical piece of data in a record.
Payload
A collection of one or more records that VSE identifies in either a single request or a single
response.
22-Jul-2016
920/2016
Note: The Copybook Bundle page in the DevTest Portal makes it easier to create, import,
and manage your copybooks and mapping files. For more information, see Create
Copybook Bundles (see page 794).
Selection
Keep the following in mind when selecting the Copybook data protocol:
Consider using the data protocol handler on both the Request and Response sides. Although you
can use the data protocol on only one side, it is not common. This documentation does not cover
the single-sided usage in detail.
22-Jul-2016
921/2016
The Copybook data protocol changes the Request (or Response) body into XML. The Copybook
data protocol does not automatically add arguments to the Request for every field. To do useful
things with the Copybook data protocol, you also must include another data protocol handler on
the Request side. Most commonly, the Generic XML Payload Parser is the second data protocol
handler. However, any data protocol handler that does useful things with XML payloads is
acceptable.
Configuration
When you have captured your traffic (or imported from Request/Response pairs, PCAP, or raw traffic
files), the Copybook DPH configuration window opens.
Enter the following parameters:
Copybook file definition folder
Designates the folder in your project where you store your copybook file definitions. This folder
becomes the base path for relative paths in the Payload Mapping File.
Payload to file definition map path
Specifies the XML document that serves as the Payload Mapping File for this virtual service.
Encoding
Specifies a valid Java charset (http://docs.oracle.com/javase/1.4.2/docs/api/java/nio/charset/Charset.
html). If provided, this value is used to try to convert the bytes in the payload into text for use in
the output XML.
Default: UTF-8
To configure the default charset, set lisa.vse.default.charset in local.properties.
Copybook cache TTL
VSE must reference a specific copybook at run time and potentially convert it to XML. The
Copybook cache TTL parameter defines how long a cached version of the converted copybook can
be kept in memory. When the specified interval expires, the converted copybook is removed from
the cache. If the file is needed again, it is read again and reconverted.
Values:
To define the timeout, set Copybook cache TTL to a positive number (in seconds).
To disable caching, set Copybook cache TTL to 0 or a negative number. VSE reads and parses
the files each time that they are needed.
Copybook parser column start
Copybooks frequently start each line with a line number. This parameter defines the column on
which the parser starts when trying to parse a copybook file definition.
Value: A zero-based inclusive index. However, you can think of it as a "normal" one-based
exclusive index.
Default: 6
Example: If you set this value to 6, the parser skips the first six characters in a line and starts with
the seventh character.
Copybook parser column end
Occasionally, copybooks contain other reference data at the end of each line. When that
happens, the parser must know on which column to stop. If there is no "extra" data at the end of
the lines in the file, you can set this number to something greater than the length of the longest
line in the file. If this number is greater than the length of a line, the parser stops at the end of the
22-Jul-2016
922/2016
22-Jul-2016
923/2016
A sample mapping file can be found here. The sample file contains examples of various configurations
and comments describing each of the attributes on each node. This sample file is useful as a
reference while creating your copybook mapping files.
Structure
The following example shows the basic payload mapping file structure. For simplicity, this example
contains no attributes of values.
<payloads>
<payload>
<key></key>
<section>
<copybook></copybook>
...
</section>
...
</payload>
<payload>
...
</payload>
</payloads>
<payloads>
The root XML node for the document. The node cannot be repeated.
<payload>
This element, in its entirety, fully describes a payload that matches it. When a payload is
determined to match a <payload> element in this document, the <payload> element is used to
describe the incoming payload.
<key>
(Optional) This option makes the XML document more readable. Everything that you specify on
this element you can also specify as attributes on the <payload> element.
<section>
A logical grouping of copybooks that defines a portion of the payload. If there are multiple
<section>s, they are processed in order with no repetition.
<copybook>
A single copybook that may or may not describe a record in the payload. A <section> can contain
multiple <copybook> elements.
<payload>
A <payload> element can contain the following attributes:
<payloadname="TEST"type="request"matchType="all"key="reqKey"value="
reqVal"keyStart="3"keyEnd="6"headerBytes="0"footerBytes="0"saveHeaderFooter="
false"definesResponse="false">
...
</payload>
At Re Description
tri qu
bu ire
te d
/O
22-Jul-2016
924/2016
22-Jul-2016
925/2016
22-Jul-2016
926/2016
de Op If true then the response for this request will look for a payload element with an identical
fin tio name but of type response. This attribute is ignored when the type is response.
es nal
Re
Default value: false.
sp
on
se
You can use the optional <key> element to replace the key-related attributes. The example
<payload> element that is shown previously could, optionally, be written as follows for
readability:
<payloadname="TEST"type="request"headerBytes="0"footerBytes="
0"saveHeaderFooter="false"definesResponse="false">
<keymatchType="all"value="reqVal"keyStart="3"keyEnd="6">reqKey</key>
...
</payload>
<section>
Example: The following example is a sample section element with all attributes on it and a
description of the attributes.
...
<sectionname="Body">
...
</section>
...
A R Description
tt e
ri q
u
22-Jul-2016
927/2016
O Defines a hint as to the order in which the records are found in the payload. The numbers
p used are irrelevant, but "later" records in the payload should use a larger integer. Multiple
ti copybooks can be tagged with the same order number, meaning that those records could be
o in any order. When a record has been found with a specific order number, subsequent
n searches only search for copybooks with that order number and greater. You can include
a copybooks in a group that will never match against the payload. They are just ignored.
l However, this affects performance because each copybook has to be checked.
Default: 0
m O Defines the maximum times that a copybook can be applied to the payload. Blank values, 0,
a p negative numbers, non-numbers, and non-existent values all mean "no limit".
x ti
o
n
a
l
n O Defines a value to override the record name (that is, the root level in the copybook).
a p
m ti If you set this value, the generated node in the XML for this copybook uses this name instead
e o of the record name from the copybook definition.
n
a If you do not set this value, the default is to look up the record name from the copybook
l definition and use that.
If you set this value to the record name from the copybook definition, the only effect is on
readability of this file.
le O Defines how to split the payload so that the next record search begins in the correct place.
n p
g ti If this attribute is not present, the processor attempts to determine the length of the
t o copybook from the definition. If, for some reason, it cannot figure out the length, the
h n processor assumes that the rest of the payload applies to this copybook, and ends processing
- a after applying this copybook. The processor ignores this field if it is not an unsigned Display
fi l numeric field.
el
d
22-Jul-2016
928/2016
You can determine how the matching logic works based on the descriptions of the XML elements and
arguments. However, to provide a clearer picture, this section explores matching fully.
When VSE receives a payload, matching occurs in the following phases:
Payload
Section
Copybook
Finalizing
Payload
Payload is the first phase of matching that happens when VSE receives a new payload. This phase
determines which <payload> element from the payload mapping file corresponds to the payload
received. VSE tries to match a <payload> element by processing the elements in the payload mapping
file in order, from top to bottom. The first match wins.
22-Jul-2016
7.
929/2016
7. If the matchType is all, Steps 2 through 6 are processed in order, stopping when a match is
found. The only variation is that in Steps 5 and 6, the value attribute is used in place of the key
attribute.
For the Response payloads (during recording):
1. If the previously seen request payload element set the definesResponse attribute to true,
immediately return the payload element with the same name as the request element, but
with a type of response. If no such element is found, there is no match.
2. If the previously seen request payload element did not set the definesResponse attribute to
true:
a. If the type attribute of this element is response, proceed. Otherwise, this element
does not match.
b. If the matchType is metaData, look for a response metaData entry with a key that
matches the key attribute from this element and with a value that matches the value
attribute from this element. If one is found, this payload element matches.
c. If the matchType is payload, search in the boundary that is specified by this element's
keyStart and keyEnd attributes for the value in the key attribute. If the key is found in
those bounds, the payload element matches.
d. If the matchType is all, complete Steps b and c in order, stopping when a match is
found. The only variation is that in Step c, the value attribute is used in place of the key
attribute.
For the Response payloads (during playback):
During playback, no matching is done for responses. Instead, during recording, whatever match was
determined is saved in the Metadata of the Response object. Then, during playback, when that
Response object is returned, the processor picks up the value from the Response Metadata, finds the
payload element with that name (and type="response") and uses it. If no such element exists, it is
considered an unrecoverable error.
Section
After the payload element is identified, the processor reviews each section element in order, from
top to bottom. No matching is done at this level. After the processor has fully processed a section
(that is, when none of the copybooks in the section match), it proceeds to the next section and does
not revisit previous sections.
Copybook
The final phase of matching is to determine which copybook in this section applies first, second, and
so on, until all the records in the payload are processed. This phase is the most complex matching
phase. The process is:
1. The processor reviews all of the copybook elements in the section and sorts them by the
number that is specified in the order attributes.
22-Jul-2016
2.
930/2016
2. The list of copybook elements with the lowest order number is checked first (in the order the
file specifies them). The remaining payload is searched for the value in the key attribute for
this copybook element and the index where it is found (if at all) is saved. The remaining
payload is searched for the value in the key attribute for this copybook element and the index
where it is found (if at all) is saved.
3. After all copybooks in the lowest order list have been checked, if any matched, the one found
earliest in the payload is used.
4. If a copybook matched:
a. If the matching copybook has matched this payload previously (an earlier record in the
payload), the max attribute is checked to see if it can be applied again. If the max has
been reached, this is not considered a match and the next matching copybook is used.
b. If the max has not been reached, this copybook is applied to the payload and the
number of bytes specified by the copybook is consumed. If there is a length-field
attribute on the copybook, the value of that field in the record is used to determine
how many bytes to consume and the processor returns to Step 2.
5. If a copybook did not match, the list of copybooks with the next lowest order number is
checked using the same rules as Steps 2, 3, and 4. After the processor decides that no
copybooks in an order number list match, it does not try to process that order number list (for
this section) again for this payload.
6. After all lists are checked and no matches are found (or the payload runs out of bytes), the
processor proceeds to the next section.
Finalizing
If bytes are left over in the payload after all sections for a payload have been processed, they are
truncated.
22-Jul-2016
931/2016
22-Jul-2016
932/2016
933/2016
becomes:
<name1>val1</name1><name2>val2</name2>
the delimiter between the pairs is a comma, and the delimiter between the name and
value is an equal sign.
List of Values
Defines the delimiter between the values.You can use two types of lists:
List of values separated by a textual delimiter.
For example, for the following data:
"val1,val2,val3,val4"
a RegEx of \d\d\d finds 123, 456, and 789 as values and discard the rest.The
parameters are named positionally.
22-Jul-2016
934/2016
Note: You can only use delimiters that are valid XML 1.0. Specifying non-printable
control characters makes the service image unusable.
XML Elements as request arguments
Specifies whether to add parameters and associated values to requests as arguments.
Values:
Selected: Automatically adds the parameters and associated values to the request as
arguments.
Cleared: You must use the Generic XML Payload Parser (see page 938) (or a similar
protocol) to select which values become arguments.
Note: This check box has no effect when the Delimited Text data protocol is used
on the response side.
5. Click Next.
The name/value pairs are represented in XML. Here, you can double-click a transaction to
show the contents of that transaction.
6. Configure the delimiters for the response side in the same way you did for the request side.
You can see the virtual service image and the payload that is converted to XML when the
processing completes.
22-Jul-2016
935/2016
Body: Structured as follows. The XML document has been formatted in this document for readability.
The request body does not contain formatting elements such as line ends and indentation.
<?xmlversion="1.0"encoding="UTF-8"?>
<ediroot>
<interchangeStandard="ANSIX.12"Date="990320"Time="0157"StandardsId="
U"Version="00300"
Control="000000015">
22-Jul-2016
936/2016
22-Jul-2016
937/2016
Note: For the Delimited Text Data Protocol (see page 934) and Copybook Data Protocol
(see page 920), this functionality is enabled by selecting the XML Elements as request
arguments check box on the data protocol configuration windows.
938/2016
Note: When using both the Generic XML Payload Parser and the Delimited Text data
protocols, add the Delimited Text data protocol before the Generic XML Payload Parser.
Otherwise, the request never appears as parsed in the recorder.
22-Jul-2016
939/2016
By default, no starter transactions are identified, so DevTest does not know which data to
review to identify the conversations. However, the Other Transactions list shows the
recorded transactions.
3. To see the XML payload in the Content area, click the first transaction.
22-Jul-2016
940/2016
The XML tab in the Content area shows the classic XML view. The DOM Tree tab shows the
payload in the tree format.
Note: This portion of the window is similar to the panel that appears when you
create an XML XPath filter. As described in XML XPath Filter (see page 1697), you can
use the lisa.xml.xpath.computeXPath.alwaysUseLocalName property to ignore the
namespace.
4. To identify a specific node as a parameter for VSE, click the node on the DOM Tree tab. The
XPath Query box displays the query that corresponds to the selected node. To evaluate the
XPath query on the current payload, click
.
The result of the evaluation is shown under the heading Filter Run Results.
5. To add this XPath query to the parameter list, click Add
.
A menu displays where you can set an operation, an argument, a meta parameter, or the
request body. For example, use the menu to select an embedded SOAP document to the
request body so that the WS SOAP protocol can be used to parse the document.
22-Jul-2016
941/2016
Screenshot of the Generic XML data protocol Create XPaths screen, marked up
6. Click Protocol Control Info. DevTest remembered the XPath string that you identified and
gave it an argument name. You can rename the argument. Also from this panel, use the Save
and Restore
buttons to save your list of XPaths to a file, or to load a list of XPaths
from a file. By saving and loading, you can easily copy and paste from one XML Payload Parser
to another.
22-Jul-2016
942/2016
Screenshot of the Generic XML data protocol Create XPaths screen, with Set Argument option selected.
Likewise, you can pull other variables from this transaction or others. It is not required for all
transactions to have the specific argument. At the time of processing, if a specific argument is
not present in the payload then it is ignored.
If you scroll to the right on the Protocol Control Info panel, you see an NS column in which
you can add or edit namespace definitions. To locate and import an XML file from the file
system and use the namespace definitions from that file, use the Browse button.
7. Double-click a transaction in the XML tab and you can see a dialog showing the content of the
transaction.
8. When you are satisfied with your choice of variables, click Next.
You are directed to the post-processing window.
22-Jul-2016
943/2016
If the JSON contains a one-element array, the data protocol converts it to an object with "element" as
the key. For example, the data protocol converts the following JSON data:
[{"question1":"answer1","question2":"answer2"}]
The JSON data protocol handler reorders the key/value pairs in an object so they are alphabetical by
key name.
In order to work correctly, the JSON data protocol handler requires the JSON data to be formatted
correctly.
Note: Recording JSON works properly if the application type is set correctly to application
/json, text/json, or text/javascript. If the wrong application type is set, recording fails.
22-Jul-2016
944/2016
Screenshot of the Request Data Copier data protocol copy request screen.
22-Jul-2016
945/2016
Fundamentally, this protocol lets you apply a list of actions against a request. You can add the
following actions in the ActionList section of the window:
Copy
Copies a piece of data in the request to another part of the request.
Move
Moves a piece of data in the request to another part of the request.
Delete
Deletes (or clears) a piece of data from the request.
Keep
Keeps a piece of data in a request while deleting anything else in that group for the data value.
All actions can be applied to the request operation, any argument, attribute, or metadata entry, or
the request body. For example, when virtualizing Java (which ends up with XML documents as
arguments), you can move or copy the value of an argument into the request body, so other data
protocols can process the argument.
22-Jul-2016
946/2016
Note: The Keep action is most meaningful for arguments, attributes, and metadata. If you
specifically keep a value from one of these three groups, any other value in that group that
is not referenced by any action in the list for the data protocol is deleted. If you keep one
argument, other arguments are removed unless they were the target of a move or copy.
This technique is a good way to remove meaningless arguments.
Each action can also be limited to apply only to requests whose operations match a specified regular
expression.
In the recording wizard or the model editor containing a Request Data Manager data protocol, add a
Keep or Delete action, or both. Select argument/attribute/meta data and specify a regular
expression to match as the name. You must also change the cell that reads named to matches. When
the data protocol is run, it keeps or deletes all items in the argument, attribute, or metadata list with
a name that matches the pattern. Leaving the operation matching pattern for an action empty affects
all requests.
From this list of transactions, double-click a transaction to open a dialog showing the content of the
transaction.
Screenshot of the Request Data Manager data protocol Transactions details screen.
Use the Request Data Manager Data Protocol to set JMS and MQ Message Properties
22-Jul-2016
947/2016
After the recording is finished, use the Request Data Manager window to add the targeted JMS
message properties to the request arguments. The JMS message properties can be found under the
request Meta Data with a msg. prefix for standard JMS properties, such as correlation ID, and a msg.
props. prefix for custom message properties. To copy a property to the request arguments, select
argument from the drop-down list:
Screenshot of the Request Data Manager data protocol Create actions against VSE requests screen.
22-Jul-2016
948/2016
Default: beanshell
To use additional scripting languages, see "Enabling Additional Scripting Languages (see page 1451)."
When you specify a Scriptable data protocol on the request side, the following window opens.
22-Jul-2016
949/2016
Two scripts are available on the response side: one for recording and one for playback. You can use
the Response - Recording script to convert the recorded response into a format that VSE can process.
Then, after it is processed, you can use the Response - Playback script to return it to the format that
the System Under Test expects.
22-Jul-2016
950/2016
You can add your own script to perform any actions you want on the request, the response, or both.
22-Jul-2016
951/2016
If some fields in the SWIFT message include a date, the data protocol reformats the date in a format
that DevTest can identify as a magic date candidate.
The following example shows the fields that the data protocol checks for dates:
:98A::SETT//19911130:98C::TRAD//20140117125901:98E::PREP//20091107093238,02/N0230:32A:
870902JPY3520000,
:30:640123
SWIFT Conversations
To generate a session key for SWIFT transactions, the SWIFT data protocol extracts information from
the message body. The protocol uses the following rules to extract the SWIFT message reference
(mesg_ref) and deal reference (deal_ref), then combines them to form the session key.
1. If field 70E is found in the form :SPRO///xxxREF/<mesg_ref>/<deal_ref>, they are extracted
from here.
2. If field 20C is found in the form :RELA//<mesg_ref>, and a second field 20C is found in the
form :TRRF//<deal_ref>, they are extracted from here.
3. If field 26H is found in the form <msg_ref>/<deal_ref>, they are extracted from here.
22-Jul-2016
952/2016
The data protocol applies these rules in order. If one of them is satisfied, it creates the session key in
the form <message ref>/<deal ref>. If none of the rules is satisfied, the data protocol treats the
transaction as stateless and it does not create a session key.
22-Jul-2016
953/2016
To use the SOAP Headers data protocol, generate a VS Image either by recording or from request
/response pairs. You typically use the HTTP/S transport protocol. Add the SOAP Headers data
protocol as a Request Side data protocol. This data protocol does not require any extra configuration.
This data protocol can be used with the SOAP data protocol to process both SOAP headers and the
SOAP body.
Arguments are named based on the structure of the XML.
Example
<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Securityxmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>username</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
<n1:ServiceControlxmlns:n1="http://localhost:8080/examples.xsd">
<n1:VersionID>2.0</n1:VersionID>
<n1:Asynchronous>
<n1:ReplyRequiredIndicator>false</n1:ReplyRequiredIndicator>
<n1:PassThroughData>
<n1:Key>InteractionID</n1:Key>
<n1:Value>444831</n1:Value>
</n1:PassThroughData>
</n1:Asynchronous>
</n1:ServiceControl>
</soapenv:Header>
...
This example would be parsed into elements that are named as follows:
Security_UsernameToken_Username
Security_UsernameToken_Password
ServiceControl_VersionID
ServiceControl_Asynchronous_ReplyRequiredIndicator
ServiceControl_Asynchronous_PassThroughData_Key
ServiceControl_Asynchronous_PassThroughData_Value
Duplicate elements are named with _1, _2, and so on, appended to the name.
22-Jul-2016
954/2016
When recording a web service with WS-Security headers, add a WS-Security Request (Request Side)
data protocol (typically before a Web Service SOAP data protocol) and a WS-Security Response
(Response Side) data protocol.
Before you record, you are presented with a set of configuration panels:
One for the WS-Security Request data protocol
Two for the WS-Security Response data protocol.
955/2016
WS-Security Request data protocol receive options for processing Request messages during recording and
playback
956/2016
Note: Some web services (for example .NET 1.x/2.0 with WSE 2.0) do not comply with
standard timestamp date formatting, and do not allow milliseconds. For these web
services, clear the Use Millisecond Precision in Timestamp check box.
WS-Security Request data protocol Send options for modifyng Response messages during playback
During playback, you must process the message as the server would send it. The SOAP message from
the VSM has no Security headers and this configuration applies the Security header.
22-Jul-2016
957/2016
WS-Security Request data protocol Receive options for processing Response messages during recording
After the recording completes, a virtual service model is created. In that model, a data protocol filter
is attached to the HTTP/S Listen step for the WS-Security Request data protocol.
Update any security configuration information for playback. For example, if your WS-Security settings
change on the service, you can update them here instead of rerecording the virtual service.
In the VSM, a filter is also added for the WS-Security Response data protocol onto the HTTP/S
Response step.
22-Jul-2016
958/2016
Any security configuration information for playback can be updated for the response message.
To save your security settings to a file, or to load a saved file containing security settings, use Load
and Save
Note: You can also access the editor from the Response Selection step in the VSM by
clicking Open next to the name of the service image.
22-Jul-2016
959/2016
Note: A service image exported from LISA 5.0 has an extension of .xml. To make this
exported service image into a valid LISA 6.0 or later service image, change the extension to .
vsi.
to zoom the panels to their largest size. To return to the original size, use the
960/2016
Note: A step subtracts its own processing time from the think time to have consistent
pacing of test executions.
22-Jul-2016
961/2016
962/2016
If the response payload is detected to be EDI data, it is converted to XML on the XML tab.
22-Jul-2016
963/2016
Transactions Tab
You can access the Transactions tab from the Service Image Editor. This tab gives information about
both stateless and stateful (conversations) transactions, with slightly different components for each.
This section describes viewing the general components of the Transactions tab that are the same for
both types of transactions.
To select between viewing conversations or stateless transactions, select either Conversation by
number or Stateless Transactions from the drop-down list.
More Information:
Transactions Tab for Stateless Transactions (see page 965)
Transactions Tab for Conversations (see page 973)
Conversation Editor (see page 975)
22-Jul-2016
964/2016
A: To view and edit stateless transactions, use the Stateless Transactions list. To add, move, or
delete stateless transactions, use the toolbar at the bottom of the pane.
B: One logical transaction (in the stateless transaction list) contains exactly one Meta transaction
and any number of specific transactions. The Transactions list shows these transactions under the
logical transaction. To add, move, or delete stateless transactions, use the toolbar at the bottom
of the pane.
C: To view and edit transaction requests and response data for either Specific or Meta
transactions, which are selected from the Transactions area, use the Transaction Basics area. You
can select a match style for the specific transaction here.
D: The Request Data panel shows the stateless requests.
E: The Response panel shows the response to the stateless requests.
22-Jul-2016
965/2016
Arguments
VSE uses the operation name and arguments to look up a matching response for an incoming
transaction.
22-Jul-2016
966/2016
Modifying Arguments
Name
Defines the name of the argument, which is parsed from the request. In most cases, this field
should not be modified. It can only be changed at the META transaction level, and these changes
propagate to the specific transactions.
Name in Session
Defines a value that the application automatically generates when magic strings are identified.
The value can be referenced in the current (or later) responses using the {{ }} notation. If this field
is not empty, the incoming value is stored in the session using the specified name. This value
should not typically be modified.
Comparison Operator
Defines an operator to use in the matching logic. By default, for a specific transaction, all
arguments are expected to match exactly. To change this and create more flexible matching logic,
modify the comparison operator. See Argument Match Operators (see page 701) for the
definitions of the comparison operators.
Magic String
Specifies whether to include the specified value as a candidate for magic strings.
Values:
Selected: If this check box is selected and you click Regenerate magic strings, the specified
value is a candidate for magic strings. Selecting this check box does not override the rules for
identifying magic strings. You cannot use it to force something to be a magic string; it is still
subject to the VSE magic string properties in the lisa.properties file.
Cleared: If this check box is not checked and you click Regenerate magic strings, the specified
value is excluded as a candidate for magic strings. If something was used as a magic string and
you did not want the magic string substitution to happen, clear this check box and select
Regenerate magic strings.
Date Pattern
Defines the pattern by which the application interprets incoming and specified values as dates.
This value is automatically generated and should not typically be modified.
This pattern is a Java date and time pattern. It is a strict interpretation, so the values must match
the pattern precisely. If both (or either) values cannot be parsed as dates, then the argument is
deemed not to have matched. If both values can be parsed as dates, they can then be compared
as dates using the following operators:
=
!=
<
<=
>
>=
You can still use "Anything," "Regular Expression," and "Property Expression." If you use "Regular
22-Jul-2016
967/2016
Mass Change
To perform a mass change of request arguments, click Mass Change
Arguments dialog appears.
To specify mass changes, complete the fields on the Change Request Arguments dialog as
22-Jul-2016
968/2016
Attributes
To add, edit, move, and delete key/value pairs, use the Attributes tab.
Meta Data
To add, edit, move, and delete Meta data key/value pairs, use the Meta Data tab.
22-Jul-2016
969/2016
A match script defines how VSE decides whether a specific transaction matches the incoming one. To
receive a match that is based on the specific condition, write BeanShell scripts performing
appropriate actions.
For example:
/*alwaysmatchname=joe*/
ParameterListargs=incomingRequest.getArguments();
if("joe".equals(args.get("name")))returntrueelsereturn
defaultMatcher.matches();
You do not need to specify a match tolerance level or match operator for the match script to work.
The match is found based on the condition in the match script.
By default (with no match script) an inbound request is matched against a service image request by
comparing operations, arguments, or both to come to a true/false "Do they match?" answer. A match
script simply replaces this logic with whatever logic makes sense and must still come to the true/false
"Do they match?" answer.
The script can use the default matching logic. Inside the script, use the expression, "defaultMatcher.
matches()". This expression returns a true or false using the VSE default matching logic.
The match script is similar to a scripted assertion. Basically, it is a regular BeanShell script but with
the following additional variables preloaded for you (and the usual properties and testExec variable):
com.itko.lisa.vse.stateful.model.Request sourceRequest (the recorded request)
com.itko.lisa.vse.stateful.model.Request incomingRequest (the live request coming in)
com.itko.lisa.vse.RequestMatcher defaultMatcher (you can default to this variable)
22-Jul-2016
970/2016
If you log messages at INFO, later when the production settings are applied to the logging.properties
file, the log level is WARN and your messages appear as a DevTest test event (a "Log Message"
event).
Tips from logging.properties:
To simplify debugging, keep a separate log for VSE transaction match/no-match events.
Change INFO to WARN or comment out the following line for production systems:
log4j.logger.VSE=INFO,VSEAPP
The Match Script editor toolbar lets you perform the following functions:
Returns you to the last edit that was made
Finds the next occurrence of the selected text
Finds previous occurrence
Finds next occurrence
Toggles the highlight search
Shifts the current line to the left four spaces
22-Jul-2016
971/2016
.
, as described in Customize the Response Editor
To inspect the Validation Results, view the XML schema source, and see the error log, use the
buttons at the bottom of the panel.
22-Jul-2016
972/2016
To add, edit, move, and delete key/value pairs, use the Meta Data tab.
Tip: You can only add properties if the response is text. You cannot add properties to a binary
response.
A: The Conversations list shows all the conversations in the service image. To view and edit a
conversation, select it. A conversation consists of one or more logical transactions.
B: The Conversation Tree editor (see page 975) displays the logical conversation that is selected in
the Conversations list. The conversation is displayed in either a graph node tree view or a
standard tree view.
C: To view and edit specific transactions or the Meta data for transactions in a selected logical
22-Jul-2016
973/2016
Type
Specifies the transaction type.
Values:
INSTANCE
TOKEN
22-Jul-2016
974/2016
Note: If you add or change several transactions, return to the Basic Info tab and click
Regenerate Magic Strings and Data Variables. The magic string and date variables are
created for you. Existing magic strings and variables are not modified.
Conversation Editor
To view and edit recorded transactions or create transactions manually, use the Conversation editor.
You can view the navigation trees in two display modes:
Graph View
Tree View
When you switch between views, the selected node remains selected. In both the Graph and Tree
views, you can perform the following actions from the editor toolbar, shortcut menus, or the view
itself.
Conversation Editor Toolbar (see page 975)
Conversation Editor Graph View (see page 977)
Node Display Status (see page 978)
Conversation Editor Tree View (see page 979)
Search and Replace Action (see page 980)
Test from Here Action (see page 981)
Highlight Navigation (see page 983)
Viewing Close Navigation (see page 983)
Viewing Wide Navigation (see page 984)
Viewing Loose Navigation (see page 984)
Restructure Conversation (see page 985)
22-Jul-2016
975/2016
Note: If a tool appears dimmed, it cannot be used with the selected transaction.
Icon
Description
Toggle
Toggles the display of the panel for managing a list of conversations. You
can specify name, type, token pattern, pattern example, or starter
transaction.
Toggle
Display
display icon
Create New
Transaction
Create new
transaction
icon
Delete
Selected
Transaction Delete icon
Up Arrow
Tree View: moves the selected node earlier in the sibling list.
Move up icon
Down Arrow
Tree View: moves the selected node later in the sibling list.
Move down
icon
Right Arrow
Graph View: moves the selected node later in the sibling list.
Move right
icon
Left Arrow
22-Jul-2016
Graph View: moves the selected node earlier in the sibling list.
976/2016
Move left
icon
Regenerate
Refresh icon
View
Navigation
View
navigation
icon
Toggle
Toggle icon
Pulls a match description from the clipboard and highlights the relevant
information in the service image.
Match
Match icon
Zoom
Zoom icon
Display
Display icon
Display
Display icon
Zoom Panel
Zoom panel
icon
22-Jul-2016
977/2016
22-Jul-2016
978/2016
In each style, a row of black dots at the bottom shows how many specific transactions belong to the
node. In the condensed style, hollow dots indicate the number of arguments to the request. In the
following graphic, the first node is displayed full size, the second is compact, and the third is
condensed.
22-Jul-2016
979/2016
22-Jul-2016
980/2016
Scope lets you specify whether the search and replace extends to:
This conversation (the default)
This transaction
This transaction and children
The entire service image.
You can also use the check boxes to specify which pieces of the transactions to include.
22-Jul-2016
981/2016
4. Enter the unique operation name and add argument key/value pairs, as appropriate.
5. Click Test.
As the following graphic shows, the result displays in blue with the path in yellow.
Note: If the test is not successful, the application displays the following error:
"No transaction matching the request follows the selected one in this conversation.
22-Jul-2016
982/2016
6. Click OK to continue.
7. Click Close.
Highlight Navigation
To view navigation possibilities in a conversation that is based on the selected navigation tolerance,
use the Conversation Tree.
Select a transaction and click View Navigation.
The default menu selection is No Navigation Highlight, which means no transactions are highlighted.
If you select a transaction and click the Highlight on transaction's tolerance option, the transaction
and its associated transactions are highlighted according to the navigation tolerance defined for the
selected transaction. Options are:
Close
Wide
Loose
Note: If you use the drop-down list on the top right of the editor to change the navigation
tolerance for the current transaction, that selection overrides the menu. To return the
highlighting to the "correct" state in this case, reselect that navigation highlighting option.
22-Jul-2016
983/2016
22-Jul-2016
984/2016
Restructure Conversation
In some cases, you want to restructure a conversation by dragging and dropping a transaction and its
subtree, if it has one. You restructure conversations in both the graph and tree views.
Follow these steps:
1. Drag a transaction to the transaction that you want to be the new parent transaction.
As you drag the transaction, it displays the symbol for "not possible."
When it is possible to drop the transaction, the "not possible" symbol disappears.
22-Jul-2016
985/2016
22-Jul-2016
986/2016
Editing a VSM
A Virtual Service Image recording creates a Virtual Service Model (VSM) with six steps or eight steps,
depending on the option chosen (More Flexible or More Efficient). Sometimes you would like to edit
the VSM by editing generated steps or adding more steps.
You can skip this section unless you must edit a VSM or you must create a VSM without a recorder.
A VSM is a specialized test case and therefore editing or creating a VSM is similar to editing or
creating a test case. Many types of steps can be added to a VSM. You can add a step that does not
appear in this menu; however, some other step types can make a VSM undeployable.
Access the menu of step types from the VSM Editor by selecting Add a new step, Virtual Service
Environment from the menu.
This section contains the following pages:
Virtual Service Router Step (see page 988)
Virtual Service Tracker Step (see page 988)
Virtual Conversational/Stateless Response Selector Step (see page 989)
Virtual HTTP/S Listener Step (see page 989)
Virtual HTTP/S Live Invocation Step (see page 991)
Virtual HTTP/S Responder Step (see page 993)
Virtual JDBC Listener Step (see page 994)
Virtual JDBC Responder Step (see page 995)
Socket Server Emulator Step (see page 995)
Messaging Virtualization Marker Step (see page 997)
Compare Strings for Response Lookup Step (see page 997)
Compare Strings for Next Step Lookup Step (see page 999)
Virtual Java Listener Step (see page 1000)
Virtual Java Live Invocation Step (see page 1001)
Virtual Java Responder Step (see page 1002)
Virtual TCP/IP Listener Step (see page 1002)
Virtual TCP/IP Live Invocation Step (see page 1004)
Virtual TCP/IP Responder Step (see page 1006)
Virtual CICS Listener Step (see page 1007)
Virtual CICS Responder Step (see page 1007)
CICS Transaction Gateway Listener Step (see page 1007)
CICS Transaction Gateway Live Invocation Step (see page 1009)
CICS Transaction Gateway Responder Step (see page 1010)
IMS Connect Listen Step (see page 1010)
IMS Connect Live Invocation Step (see page 1011)
22-Jul-2016
987/2016
988/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
989/2016
22-Jul-2016
990/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
991/2016
Target port
Enter the name of the port on which the request is made.
Replacement URI
To replace the full URI in a GET/POST request, enter a new target path field. You can provide the
URI as a DevTest property. This field can be blank, in which case the URI from the live request is
used.
Do not modify host header parameter received from client
If selected, this option instructs the live invocation to forward the host header that is received
from the client application to the target server. If cleared, the live invocation regenerates the host
header parameter to be host: <target host>:<target port>.
Use SSL to server
Specifies whether to send an HTTPS request to the live system.
If you select Use SSL to server, an HTTPS connection is used between the virtual service and the
live system.
If you do not select Use SSL to server, an HTTP connection is used between the virtual service and
the live system.
SSL keystore file
Specifies the name of the client-side keystore file. DevTest uses this keystore when using an
HTTPS connection to the server.
By default, the ssl.client.cert.path property is used for the client-side keystore file. This property
can also be selected from the Defaults section of the dropdown list.
Keystore password
Specifies the password that is associated with the specified client-side keystore file.
You can specify the password directly using the Password Editor option, or you can use the
DevTest Property Reference Editor option to specify a property expression that will be evaluated
to provide the password.
By default, the property expression {{ssl.client.cert.pass}} is used for the client-side keystore
password. This property expression can be selected from the Defaults section of the dropdown
list.
Format step response as XML
The VSE framework expects Respond steps to accept one of the following:
A response object
A list of response objects
An XML document that represents either
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
22-Jul-2016
992/2016
Note: The Virtual HTTP/S Live Invocation step supports the lisa.http.timeout.socket and
lisa.http.timeout.connection properties to control the client sockets used. The lisa.vse.
http.live.invocation.max.idle.socket property controls how long an idle client socket waits
before it is too old to use. This property defaults to 2 minutes.
See Local Properties File (see page 1750) for more information about using the proxy
properties: lisa.http.webProxy.ssl.host, lisa.http.webProxy.ssl.port, lisa.http.webProxy.
host.account, and lisa.http.webProxy.host.credential.
993/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
22-Jul-2016
994/2016
Note: When you use the Socket Server Emulator step in response mode, the text to go out
must result in a valid HTTP response message.
995/2016
22-Jul-2016
996/2016
Note: You do not need to use this step with the JMS transport protocol.
997/2016
998/2016
22-Jul-2016
999/2016
Delay Spec
Enter the delay specification range. The default is 1000-10000, which indicates to use a randomly
selected delay time from 1000 milliseconds through 10000 milliseconds. The syntax is the same
format as Think Time specifications.
Criteria
This area provides the string to compare against the Text to match field. To edit the criteria:
In the Case Response Entries area select the appropriate row.
From the Criteria list, select a setting.
Compare Type
Select an option from the list:
Find in string
Regular expression
Starts with
Ends with
Exactly equals
Default: Find in string
Next Step
From the list, select the step to go to if the match is found.
Criteria
You can update the criteria string for an entry.
Connecting Agents
You can select agents from the Available Online Agents list. Select the agent or agents and click the
right arrow button. The agent moves to the connected agents list.
When you select an agent from either the Available Online Agents list or the connected agents list,
the information bar below the list displays host and Main Class information for the agent.
To add an agent manually to the connected agents list, use the Add Agent field above the Connected
22-Jul-2016
1000/2016
If an existing agent is not in the Available Online Agents list, type it in the dialog and click Add
.
This mechanism is primarily provided for adding offline agents that were not previously in the
connected list.
Disconnecting Agents
To disconnect an agent, select the agent from the connected agents list and click the left arrow
button.
To add a protocol to the recording, select the Protocols arrow. From the list of available protocols,
select any to record and click the right arrow to move them in the right pane.
To view or change the configuration information for a protocol, double-click any row with three dots
(...) to the right of the protocol name. The Protocol Configuration window opens, and you can update
the parameters.
22-Jul-2016
1001/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1002/2016
Bind address
Enter the local IP address on which connections can come in. With no bind address specified, the
listen step accepts connections on the specified port regardless of the NIC (or the IP address) on
which it comes in.
Use SSL to server
Specifies whether to send an SSL (secured layer) request to the server.
Values:
Selected: Sends an SSL request to the server. You can select Use SSL to server and not select
Use SSL to client. In that case, a plain TCP connection is presented for recording, but those
requests are sent to the server using SSL.
Cleared: The application does not send an SSL request to the server.
Use SSL to client
This option is only enabled if Use SSL to Server has been selected. Check whether we can play
back an SSL request from the client using a custom client keystore. When you specify Use SSL to
client, you are allowed to specify a custom keystore and a passphrase. If these values are
entered, they are used rather than the hard-coded defaults.
SSL keystore file
Click Select... to browse to your SSL keystore file. The same keystore file must be available to the
VSE server to which the VS model is deployed.
Keystore password
Enter the keystore password, then click Verify.
Treat request as text
Specifies whether the application processes the request as text.
Values:
Selected: The application processes the request as text.
Cleared: The application does not process the request as text.
Request encoding
When Treat request as text is selected, specifies the request encoding.
Request Delimiter
Specifies the delimiter that defines the end of the request.
Values:
None
Records are terminated with line endings
Records are of fixed length
Records are equal to whole data package
Records are delimited by specific characters
22-Jul-2016
1003/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1004/2016
Selected: Sends an SSL request to the server. You can select Use SSL to server and not select
Use SSL to client. In that case, a plain TCP connection is presented for recording, but those
requests are sent to the server using SSL.
Cleared: The application does not send an SSL request to the server.
Use SSL to client
This option is only enabled when you select Use SSL to Server. Use SSL to client specifies whether
the application can play back an HTTPS request from the client using a custom client keystore.
Values:
Selected: You can specify a custom keystore and a passphrase. If you enter these values, the
application uses them instead of the hard-coded defaults.
Cleared: The application cannot play back an SSL request from the client using a custom client
keystore.
SSL keystore file
Click Select... to browse to your SSL keystore file. The same keystore file must be available to the
VSE server to which the VS model is deployed.
Keystore password
Enter the keystore password, then click Verify.
Treat response as text
Specifies whether the application processes the response as text.
Values:
Selected: The application processes the response as text.
Cleared: The application does not process the response as text.
Response encoding
When Treat response as text is selected, specifies the response encoding.
Response Delimiter
Specifies the delimiter that defines the end of the response.
Values:
None
Records are terminated with line endings
Records are of fixed length
Records are equal to whole data package
Records are delimited by specific characters
Delimiters match a regular expression
Regular expression matches the expression (includes delimiter)
22-Jul-2016
1005/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
VSE Lookup Step
For a live invocation step to support failover execution mode, it must know the step that is used
to look up VSE responses so that it can redirect the VS model to the correct step when necessary.
This field contains a list of steps in the VS model. Select the standard VSE Response Lookup step.
That allows the live invocation step to move to the VSE response lookup step when necessary.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1006/2016
22-Jul-2016
1007/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1008/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
VSE Lookup Step
For a live invocation step to support failover execution mode, it must know the step that is used
to look up VSE responses so that it can redirect the VS model to the correct step when necessary.
This field contains a list of steps in the VS model. Select the standard VSE Response Lookup step.
That allows the live invocation step to move to the VSE response lookup step when necessary.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1009/2016
22-Jul-2016
1010/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
22-Jul-2016
1011/2016
22-Jul-2016
1012/2016
Listen Step
The Listen step listens for incoming requests and converts them to standard VSE requests.
The Receive tab contains the list of receive operations.
The Channel Name field defines the request channel name. The value must match the operation
name that is defined in the service image.
To disable and reenable individual request channels, use the Enabled check box. At least one request
channel must be enabled.
The ReplyTo Mappings tab is applicable to the segregated messaging scenario. This type of scenario
occurs under the following conditions:
A set of queues is accessible to DevTest.
Another set of queues is not accessible to DevTest.
The application runs on the non-accessible queues.
Messages are automatically forwarded word for word to the DevTest-accessible queues
automatically.
Each mapping consists of the following items:
The response-side channel name
The client reply-to destination used by the client
Respond Step
The Respond step sends one or more response messages in the VSE response.
The Channel Name field defines the response channel name. The value must match the channel.name
(http://channel.name) metadata property that is defined in the service image.
To disable and reenable individual response channels, use the Enabled check box.
22-Jul-2016
1013/2016
22-Jul-2016
1014/2016
1. The Listen step receives a request message and converts it into a VSE request.
2. The Virtual Service Router step routes the flow to the response selection step.
3. The VS Image Response Selection step selects a matching transaction from the service image
and produces a VSE response.
4. The Respond step sends one or more response messages in the VSE response.
5. Return to Step 1.
During live invocation, the execution flow of the virtual service model is more complicated.
The following aspects of asynchronous messaging make live invocation difficult:
A single request can have multiple responses.
Responses can take any amount of time to be returned.
In general, it is impossible to determine when all of the responses have been received.
As a result, the Live Invocation step and the Respond step are run in a loop.
The following graphic uses an overlay to illustrate the flow.
22-Jul-2016
1015/2016
1. The Listen step receives a request message and converts it into a VSE request.
2. The Virtual Service Router step routes the flow to the live invocation step.
3. The Live Invocation step forwards the request to the live service.
4. The Live Invocation step starts listening on every live response queue.
5. The Live Invocation step receives a single response from any of the live response queues and
converts it into a VSE response.
6. The Respond step returns one response message to the client.
7. Return to Step 5 and repeat until the Live Invocation step determines that the transaction is
complete. Any of the following conditions can cause the Live Invocation step to make this
determination:
The timeout is set and it passes without receiving another response from any of the live
response queues. The default value is 30 seconds. The timeout is an advanced parameter
that can be set in the VSE recorder or in the Live Invocation step.
The maximum number of responses is set and that number has been reached. The default
value is 1, which indicates that the loop can recur only once. The maximum number of
responses is an advanced parameter that can be set in the VSE recorder or in the Live
Invocation step.
The virtual service model is running close enough to capacity that it needs the current
model execution thread to break out of its transaction and handle a new request. If the
timeout and the maximum number of responses have not been set, this action is the only
way for the model to break out of waiting for live responses and loop back to the Listen
step.
8. The Live Invocation step constructs a final VSE response that contains all of the response
messages that went through the loop. The step loops a final time to the Respond step.
22-Jul-2016
1016/2016
9. The Respond step does not send any messages on the final loop. Instead, the Respond step
completes the typical VSE state cleanup tasks.
10. Return to Step 1.
When the virtual service model is in Failover mode, it acts like Live Invocation mode most of the time.
However, when the Live Invocation step fails to receive a response from the service, the virtual
service model fails over to the service image to generate a response.
1. The Listen step receives a request message and converts it into a VSE request.
2. The Virtual Service Router step routes the flow to the live invocation step.
3. The Live Invocation step forwards the request to the live service.
4. The Live Invocation step starts listening on every live response queue.
5. The Live invocation step fails to receive a single response from any of the live response
queues. This scenario can happen because of a connection failure while listening on any of the
response queues, or a failure to receive a response within the specified timeout.
6. Execution goes to the VS Image Response Selection step, which generates a full VSE response
that contains one or more response messages.
7. The Respond step sends one or more response messages in the VSE response.
8. Go to Step 1. Each transaction can follow the Live Invocation flow or the Failover flow,
depending on what happens in Step 5.
When the virtual service model is in Stand In mode, it acts like Normal mode most of the time.
However, if the service image returns the unknown response, the virtual service model switches to
Live Invocation mode and gets the response from the live service. This mode is basically the opposite
of Failover mode.
1. The Listen step receives a request message and converts it into a VSE request.
2. The Virtual Service Router step routes the flow to the response selection step.
3. The VS Image Response Selection step fails to find a matching transaction from the service
image.
4. Execution goes to the Live Invocation step. The Live invocation step forwards the request to
the live service.
5. The Live invocation step starts listening on every live response queue.
6. The Live Invocation step receives a single response from any of the live response queues and
converts it into a VSE response.
7. The Respond step returns one response message to the client.
8. Go to Step 4 and repeat until the Live Invocation step determines that the transaction is
complete.
22-Jul-2016
1017/2016
9. The Live Invocation step constructs a final VSE response that contains all of the response
messages that went through the loop. The step loops a final time to the Respond step.
10. The Respond step does not send any messages on the final loop. Instead, the Respond step
completes the typical VSE state cleanup tasks.
11. Go to Step 1. Each transaction can follow the Normal flow or the Stand In flow, depending on
what happens in Step 3.
1018/2016
Note: If this check box is cleared, the step produces a list of response objects. The step
produces the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1019/2016
1020/2016
De-identifying Data
In VSE, de-identification (formerly called desensitization) means attempting to recognize sensitive
data and substituting random, but validly formatted, values for that data during recording. Use data
de-identification when you do not want to use real customer data as your test data.
Dynamic De-identification
Dynamic de-identification occurs at the transport layer. De-identification is invoked by enabling the
De-identify (transport layer) check box on the Basics tab of the Virtual Service Recorder.
This de-identification program uses filters that ensure that sensitive information is never written to
disk during the recording phase. The de-identify.xml file in the DevTest home directory configures
data de-identifiers to recognize known patterns such as credit card numbers. The file replaces the live
data with realistic but unusable replacements. The file uses Regex pattern matching to recognize and
find sensitive data. This file is parsed each time that the recorder is started.
You can use the built-in TestData string generation patterns as replacement data options. TestData
provides 40,000 rows of test data, including replacement data for some common data types: names,
addresses, telephone numbers, and credit card numbers.
22-Jul-2016
1021/2016
You can customize these preset patterns to create your own. We recommend a regular expression
toolkit such as RegexBuddy. RegexBuddy lets you paste in your recorded payload and interactively
highlights Regex matches as you fine-tune the Regex.
Matches are processed in the order they exist in the file, so put your more specific matches first.
To avoid text escaping issues (especially with Regex), you must enclose <regex> and <replacement>
child text in a CDATA element.
Static De-identification
Static data de-identification involves manually searching and replacing data in an existing service
image.
To access the Search and Replace menu, right-click a node in the service image and select Search and
Replace.
Specify a specific string to replace with another, then indicate the scope of the change. Click Replace
to run the search and replace function for the areas you selected.
Virtualizing a Service
Virtualization is the process by which VSE responds to the client in the absence of the server.
Virtualization uses the VSM and the service image.
Note: You can minimize the Virtual Service Environment window, but do not close this
window.
If you installed DevTest Windows system services, you can use the system service to start VSE.
You can also use the following command to start a named VSE from a command prompt:
[LISA_HOME]\bin\VirtualServiceEnvironment.exe -n VSEName -m RegistryName
22-Jul-2016
1022/2016
22-Jul-2016
1023/2016
The session panel is divided into two panes: Session Information and Response Information. Each
pane includes color-coded status indicators that show the status of the session and the response. The
Session Information and Response Information sections each describe these status indicators in the
context of the different panes. In general, the different colors of the status icon indicate the
following:
Green: Indicates there is an exact transaction match between the virtual service and the live
system. Green also indicates that the response was successfully recorded, and the recorded
response does not differ from the the live system response.
Yellow: Indicates a match between the virtual service and the live system. However, the recorded
response body differs from the live system.
Red: Indicates conversational transaction navigation is different between the virtual service
recording and the live system. For example, the response was not found in the virtual service, but
the response is played back from the live system.
Gray: None
22-Jul-2016
1024/2016
Session Status
Displays a color-coded icon to indicate the current session status.
Green: If the recorded response matches the live system response(green), then the session
status is also green.
Yellow: If the recorded response differs from the live system (yellow), then the session status
is also yellow.
Red: If a response is red, then the session status is also red.
Once the session status is red, it remains red even if subsequent responses match successfully.
This indicates that at least on new response is from the live system.
Session ID
Identifies the unique ID for each session.
Created On
Displays the timestamp of the first transaction in that session.
Modified On
Displays the timestamp of most recent transaction.
Txn Count
Identifies the number of transactions that were recorded after the service started.
Client ID
(Protocol-specific) For HTTP, displays the endpoint of the client that submitted the transaction.
Most Recent Request
Identifies the most recent request that came through on the specific session.
22-Jul-2016
1025/2016
22-Jul-2016
1026/2016
Preferences dialog
Notes:
Set the Registry URL field to an https URL. This type of URL requires the enabling of
HTTPS communication with the DevTest Console, as described in Using HTTPS
Communication with the invoke APIs (see page 1489)..
Be sure to enter values in the User Name and Password fields. Leaving these fields
blank can result in the appearance of the Eclipse Password Required dialog, which is
not the correct dialog for VSE Manager. If the Password Required dialog does appear,
click Cancel instead of entering a user name and password.
1027/2016
22-Jul-2016
1028/2016
22-Jul-2016
1029/2016
More Information:
Video about Integrating Eclipse with CA LISA Service Virtualization (https://www.youtube.
com/watch?v=ZpwxoOdIh24)
VSE Commands
This section contains the following pages that detail the available VSE commands:
VSE Manager Command - Manage Virtual Service Environments (see page 1030)
ServiceManager Command - Manage Services (see page 1032)
ServiceImageManager Command - Manage Service Images (see page 1032)
VirtualServiceEnvironment Commands (see page 1038)
22-Jul-2016
1030/2016
--registry name
Sets the name of the DevTest registry through which to work.
Note: The --registry parameter must be defined before a command is run. Otherwise, the
command will, by default, run on the local registry. If there is no local registry, the
command will not run.
--vse name
Sets the name of the virtual service environment with which to work.
--username=name
Sets the ID with which to authenticate to ACL.
--password=name
Sets the password that is associated with the specified --username value.
--status [vs-name | all]
Prints the status of a specific virtual service or of all virtual services in the current environment.
--performance [on | off]
Specifies the performance mode (see page 673) for the VSE.
--deploy archive-file
Deploys a new virtual service to the current environment. The specified archive file must have a
virtual service model as its primary asset.
--redeploy archive-file
Redeploys the specified virtual service to the current environment.
--update vs-name [capacity capacity] [--thinkscale scale ] [--auto-restart [ON|OFF] [--grouptag
group tag ]
Updates the capacity, think scale, group tag, auto-restart setting, or any combination of these
parameters for the named virtual service.
--remove vs-name
Removes the named virtual service from the current environment.
--start vs-name
Starts the named virtual service in the current environment.
--set-exec-mode vs-name --mode [DYNAMIC | VALIDATION | LIVE | TRACK | EFFICIENT |
LEARNING | STAND_IN | FAILOVER]
Sets the execution mode for the named virtual service in the current environment.
--stop vs-name
Stops the named virtual service in the current environment.
22-Jul-2016
1031/2016
--help
Displays help text.
--version
Prints the VSE version number.
22-Jul-2016
1032/2016
Note: Arguments with values that contain spaces (such as the names of protocols) must be
enclosed in quotation marks. For example: "--import=my file.xml" and -i"my file.xml"
1033/2016
22-Jul-2016
1034/2016
1035/2016
Examples
ServiceImageManager has broad functionality, so review the documentation to find the proper
arguments. Here are few scenarios that ServiceImageManager can be used for:
22-Jul-2016
1036/2016
Making a Recording
ServiceImageManager -d -v c:/myRecording.vrs -C c:/recording.config -s c:
/generatedImage.vsi -m c:/generatedModel.vsm -P 3366 -G
This command imports the raw traffic and processes it as HTTP/S data. The command then processes
22-Jul-2016
1037/2016
VirtualServiceEnvironment Commands
Use the VirtualServiceEnvironment command to manage the VSE application. The executable is
located in the [LISA_HOME]\bin directory.
This command has the following format:
VirtualServiceEnvironment[--help|-h][--name=name|-n=name][--registry=registry-spec|
-m=registry-spec][--labName=lab-name|-l=lab-name] [--port=port-number|-P=port-number]
[--version]
--help -h
Displays help text.
--name=name -n name
Defines the service name for the environment server.
Default: The system property lisa.vseName. The default value for the system property is
VSEServer.
--registry=registry-spec -m registry-spec
The registry to which to connect.
Example:
-m=tcp://localhost:2010/registry1
--labName=lab-name -l lab-name
Specifies the name of the lab to use.
Default: Default
--port=port-number -P port-number
Specifies the service port to which the VSE publishes. It is the same as specifying the port as part
of the name argument.
--username=username -u username
Specifies the DevTest security username.
--password=password -p password
Specifies the DevTest security password.
--version
Prints the VSE version number.
22-Jul-2016
1038/2016
You can configure these properties from the Agents window (see page 1046) of DevTest Portal. The
properties appear in the Settings tab.
Startup mode
Specifies the virtualization mode at startup>
Values:
Passthrough
Recording
Playback
Shallow recording
Specifies to perform callbacks only on top level (in the stack frames) virtualized methods.
Maximum graph size
Defines the maximum size (in bytes) of a serialized-to-XML object graph.
Reply timeout
Specifies the maximum interval that is allowed for a VSE reply at playback. This value should
exceed any think time in your tests.
Omit by reference
Specifies whether to record or replay arguments that reference and void methods modify.
Values:
Selected: Do not record or replay arguments that reference and void methods modify. Select
this check box if you are not virtualizing any void methods that change the arguments state.
No void methods go to VSE and return immediately to enhance performance.
Cleared: Record or replay arguments the reference methods and void methods modify.
Cache responses
Specifies whether to cache response objects key by their string representation to bypass
unmarshalling.
Values:
Selected: Cache response objects key by their string representation. When enabled, this
property still causes a request to VSE. When the XML payload is received back in the agent,
instead of deserializing it, we try to look for the object in a cache. The key is essentially an
XML representation of the response. This setting is helpful to improve performance if
responses are not in a mutable state. Selecting this property can increase memory usage.
Cleared: Do not cache response objects key by their string representation.
Enable JIT
VSE jit means model/image logic is partially (or entirely) cached in the agent.
JIT threshold
Defines how many method invocations cause VSE jitting to occur.
22-Jul-2016
1039/2016
22-Jul-2016
1040/2016
CAI captures the data that flows through an application. CAI uses this data to generate paths that can
be viewed in the DevTest Portal. From the DevTest Portal, users can perform the following tasks:
Drill down into business transactions and analyze abnormal behavior
Generate architecture diagrams for cross-functional team collaboration
Generate baseline test cases for regression testing
Generate virtual services
Isolate a defective component and generate the test cases and virtual services for reproducing
the defect
Users can also create defect tickets from the user interface of an application. The tickets can be
managed in the DevTest Portal.
To view a tutorial, see CA Continuous Application Insight Tutorial (see page 332).
The following video provides an overview and introduction to CAI.
22-Jul-2016
1041/2016
Large Payloads
If you want the agent to capture large payloads in a short period of time, be sure to increase the
following settings:
Java heap size of the broker
Maximum buffer memory
For information about how to update the Java heap size of the broker, see Memory Settings (see
page 1444).
The Maximum buffer memory property is a broker property that you can configure from the Agents
window of DevTest Portal. The name of this property in the rules.xml file is lisa.broker.transaction.
max.buffer.mem.
An example of a large payload is 15 MB.
Without these changes, you might receive a java.lang.OutOfMemoryError exception in the broker.
1042/2016
Note: For information about the server components that must be running, see Start the
DevTest Processes or Services (see page 145).
One possible error message indicates that the user cannot be authenticated and that you should
make sure the registry service is running. If you receive this message and the registry service is
running, the cause might be a slow network. Analyze your network for impaired performance.
Follow these steps:
1. Complete one of the following actions:
Open a supported browser and enter http://localhost:1507/devtest.
If the registry is on a remote computer, replace localhost with the name or IP address of
the remote computer.
If the port number was changed from the default value 1507, use the new port number.
Select View, DevTest Portal from DevTest Workstation.
2. Enter your user name and password.
3. Click Log in.
22-Jul-2016
1043/2016
Note: Some browsers or corporate security can block the download. Set the browser to
allow pop-ups or accept the download when prompted.
To download the agent.zip file, click the down arrow next to your user name and select Download
Agent.
More Information:
22-Jul-2016
1044/2016
Each transaction frame has a unique identifier and a category. Typically, the category represents a
protocol or operating environment. Examples include EJB, JDBC, JMS, REST, SOAP, and WebSphere
MQ. A transaction frame is a node in the transaction path. Each node represents a step in the overall
business transaction and the code or business logic that executed. A collection of transaction frames
shows the order of the code that executed to fulfill the business transactions.
Each transaction contains a hierarchical set of transaction frames. The root transaction frame is the
top-level frame in the hierarchy. Each transaction has a unique identifier.
Transactions are also referred to as paths. A transaction path is a visual representation that shows
the flow of how the user request is serviced. For example, the path reveals all the front-end and backend services that a transaction contacts and the relationship between the services.
The following graphic displays a transaction path in the DevTest Portal.
22-Jul-2016
1045/2016
The JNDI URLs for SAP J2EE containers are captured with a port of 50004, which is the default port for
the P4 protocol. If the application is using a nondefault port, you might need to change the baseline
test to reflect the nondefault port.
Artifact generation for JNDI-based protocols is not supported with the new lookup format, which
uses key-value pairs (for example, ejb:/key1=value1, key2=value2...). The lookup format that uses
the full JNDI name is supported.
For the EJB protocol, the IP address that is captured is the SAP internal server IP address. If you
perform tests from an external server using an external public IP address, you might need to change
the baseline test configuration in DevTest Workstation before you run the test to reflect this IP
address.
When you capture web service traffic, the server URL includes the string localhost instead of the
computer name or IP address. Before you run a generated baseline or virtual service, open the
baseline or virtual service and locate the occurrence of localhost. The string might be defined as a
property in the active configuration. Change the string localhost to the computer name or IP address.
Do not set the capture level for the RMI protocol to Full Data. Setting the capture level to Full Data
can cause performance issues.
Agent Configuration
Perform agent configuration tasks like setting capture levels and upgrading an agent from the Agents
window in DevTest Portal. To open the Agents window, select Settings, Agents from the left
navigation menu.
The Agents window contains the following components:
Agents pane
This pane contains a broker and one or more agents. The broker appears at the top. The broker
and each agent displays the current status. You enable or disable the transaction capture, delete
offline agents, and upgrade agents to the latest version from this pane. Agent groups can be
added, configured, and managed. When a broker and agent are different versions, the hat icon
and version number of the agent is orange. When you select an agent or broker, the right pane of
the Agents window displays detailed information.
JVM Performance pane
The performance details display at the top, right pane.
Adjust Captures for Protocols pane
This pane contains the protocols for agent or group that is capturing data. When a group is
selected in the Agents pane, the performance and count information do not display. This pane is
not available when the broker is selected in the Agents pane.
Information tab
This tab contains detailed information about the broker or agent.
22-Jul-2016
1046/2016
CICS Agents
The Agents window contains the following components for CICS agents:
Agents pane
This pane contains a broker and one or more agents. The broker and each agent displays the
current status. The broker appears at the top. You enable or disable the transaction capture,
delete offline agents, and upgrade agents to the latest version from this pane. When you select
an agent or broker, the right pane of the Agents window displays detailed information.
Agent Properties pane
This pane contains the configuration properties for the CICS agent.
Virtualized Programs pane
This pane displays all the transactions for example, CICS LINK and DTP that are deployed to the
CICS agent.
More Information:
22-Jul-2016
1047/2016
Filter Agents
Use filter options to narrow down the list of agents that display in the Agents window. From the filter
pane, sort and filter agents and specify search text criteria.
Agents are sorted and filtered using the following options:
22-Jul-2016
1048/2016
22-Jul-2016
1049/2016
Note: CICS agent capture is enabled from the Agents Properties pane in the Agents
Window. See Configure Capture Levels for Agents (see page 1052) to set the CICS agent
capture level.
Note: Performance data is not available for some agents for example, CICS agents.
22-Jul-2016
1050/2016
22-Jul-2016
2.
1051/2016
22-Jul-2016
1052/2016
If you want to create baselines (see page 1151) or virtual services (see page 1117), ensure that the
capture levels for the appropriate protocols are set to Full Data.
If the count is more than one thousand, the text 999+ displays. The tooltip for the icon shows the
exact number.
Note: Setting different capture levels is not supported for queue-based client and server
communication, for example, WebSphere MQ and JMS.
7. To refresh the counts and capture levels, select the Auto Refresh check box.
22-Jul-2016
1053/2016
Environment Variables
The Environment Variables tab displays the system environment variables on the computer
where the agent is running.
Follow these steps:
1. Select Settings, Agents in the left navigation menu.
The Agents window displays.
2. In the Agents pane, select an agent or broker.
3. Select the Information tab from the right pane.
4. (Optional) Select the Auto Refresh check box to refresh automatically the notification
information every ten seconds.
5. Click Expand Panel
6. (Optional) Use the Time and Message search field to find specific error messages.
7. (Optional) Edit the value in the Show Total field by entering a number from one to 500. Use
the arrows to increase or decrease the number in increments of ten.
22-Jul-2016
1054/2016
22-Jul-2016
1055/2016
22-Jul-2016
1056/2016
Use the search box in the left pane to filter the list of interfaces and classes.
Note: When entering the filter criteria in the search box, you must type a minimum of
three letters.
When an interface or class is selected in the left pane, the right pane displays the methods.
A blue icon in the Action column indicates that the agent is intercepting a method. The icon is gray
when the agent is not intercepting a method.
To enable or disable the interception of a method, click the icon in the Action column.
To view the number of classes that are capturing interceptions, select the Show counts of capture
enabled classes checkbox. Click the folder in the left pane to display the count.
1057/2016
Note: These operations are CPU intensive. Avoid using this feature on an agent that has
high traffic or large payloads.
When assembling transactions, the broker checks the de-identification property for each agent. If the
value is true, the replacement is performed and the sensitive data is not saved to the database.
Be aware of the following limitations:
With dummy data in the transaction request, baselines might not be able to reproduce the exact
test step.
With dummy data in the transaction response, baseline assertions might fail.
With dummy data in the transaction request, VSE might not be able to find the matched response
if you re-run the same test steps. As a workaround, open the service image in DevTest
Workstation and set the match style to Signature.
With dummy data in the transaction response, VSE might return a response that is different from
the original response.
to
Note: Not all agents can be upgraded in DevTest Portal. Native agents and agents using JRE
1.5 and LisaAgent2.jar must be manually upgraded (see page 1059).
Only pure agents that have the following requirements can be upgraded:
JRE 1.6 or later
Agent must be started from the InsightAgent.jar file.
22-Jul-2016
1058/2016
to use
22-Jul-2016
1059/2016
Note: The mainframe group is automatically created for CICS agents. Group settings are
not available for the group. CICS agents cannot be removed from the mainframe group.
. The group is
After you create a group, you add agents and apply settings from the agent or agent group.
22-Jul-2016
4.
1060/2016
4. When one or many agents from different groups are selected, select Remove Agent from
Group.
5. Click OK.
6. Click Continue.
The group is removed.
Note: When an offline agent is restarted, the agent settings are reset to the group settings.
22-Jul-2016
1061/2016
Note: Frames for each transaction follow a specific execution order and are not arranged
by a particular agent.
When you open the window, the list view is displayed. To switch to the graphical view, click
Graphical view is a visual representation of the transactions. This view displays up to a maximum of
100 transactions. You can do the following operations:
Search transactions by text, time, and date
Filter paths by using refinement options
Exclude data from capture
View the transaction details
Pin and unpin transactions
22-Jul-2016
1062/2016
To view a portion of a large transaction at a time, click Show outline navigation view
In the list view, the transactions appear in a table with the name, start time, wall time, CPU time, and
agent name. You can do the following operations:
Search transactions by text, time, and date
Filter paths by using refinement options
View information about a path. For example, the path and agent name, start time, wall time, and
CPU time
View the transaction details
Export and import paths
View paths for transactions that have identical paths
Shelve transaction frames
Generate all artifacts for an agent
Enter text strings and select a time period to limit the number of transactions frames that display.
The default time period is 1 Day.
22-Jul-2016
1063/2016
22-Jul-2016
1064/2016
22-Jul-2016
1065/2016
The filtering options that are available are based on the frame types that display in the list or
graphical view.
When a filter is applied, the following refinement icon displays:
The following words or parts of speech can be used when forming your search phrase:
Noun, singular (n)
Verb (v)
Conjunction Examples
(c)
and, or
n = JBoss_LISA_Bank
n + v + n = category is Java
22-Jul-2016
2.
1066/2016
2. Enter the text search criteria in the search text field and click Search
A list of paths display that is based on the search criteria.
3. (Optional) To refine your search, click
pane.
22-Jul-2016
1067/2016
Filter Transactions
Use the filter options to narrow down the number of transactions that appear in the Analyze
Transactions window. Enter a filter option from the search text fields or select the check boxes. For
example, if you know the class name to filter, select the corresponding Class Name check box.
Multiple filter options can be selected. The Analyze Transactions window returns transactions
containing that class name.
The following filter options are available:
Agent
Category
Class Name
Execution Time
Local IP
Operation
Point of Interest
Remote IP
Tags
Transaction ID
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
The Analyze Transactions window displays in list view by default.
2. Click Refine transaction search result by applying filters
open the Refine By pane.
3. Select the appropriate check box, select Select All, or enter text.
The Analyze Transactions window returns transactions for the specified filter option.
4. To clear selections for a filter option, click Clear for the corresponding filter.
5. To clear all filter options, click Clear All.
6. Click X to close the Refine By pane.
For example, the following graphic displays paths that contain EJB frames:
22-Jul-2016
1068/2016
You can remove the EJB calls from the path by clicking Filtering options
check box.
The following graphic displays the transactions without the EJB frames:
22-Jul-2016
1069/2016
The dotted lines indicate that the EJB frames occurred before the SQL activity.
22-Jul-2016
1070/2016
If you filter the JDBC frames for the same transactions, only the calls that occurred before the JDBC
frames display. The following graphic displays the transactions without the JDBC frames:
2. Click Graphical
.
The transactions display in the graphical view.
3. Click Filtering Options
22-Jul-2016
1071/2016
22-Jul-2016
1072/2016
Notes:
Be careful when excluding data. If a transaction has multiple frames, excluding one
frame can cause unpredictable behavior. For example, the category of the root frame
can change or the remaining frames might not stitch correctly.
This feature is not supported for transactions that are created from the CAI extension
for Google Chrome.
6. To view the items that are currently excluded, click Manage exclude frame capture rules
.
7. To make an item available for capture again:
22-Jul-2016
a.
1073/2016
7.
button to expand and collapse the area for the path graph and the frame information.
The title bar contains the name of the root transaction frame.
22-Jul-2016
1074/2016
In the path graph, a visual path of the transaction displays an icon representing the container type. If
a container type is not recognized, a Java icon is used.
The path graph also indicates which frames are not eligible for artifacts. Point to the X to the left of
the frame to view this information.
To view the usage counts for identical and partial transaction paths, select the Enable check box for
the Usage Count field at the top of the path graph. See View Usage Counts for Identical and Partial
Transaction Paths (see page 1085) for more information.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
The Analyze Transactions window displays.
2. (Default) In the list view, select the transaction link in the Name column.
3. In the graphical view, click a frame.
The transaction detail dialog opens.
4. Review the path graph and the frame information.
5. (Optional) To increase or decrease the view of the path, use the + and - buttons.
6. (Optional) To pan the view of the path, select the path while holding and moving it around the
path graph.
7. (Optional) To navigate to the previous and next transaction, click the arrows at the left of the
title bar.
8. Click X to close the dialog.
Path Graph
A path graph contains a graphical representation of a path and its transaction frames. The path graph
displays in the upper area of the transaction detail dialog (see page 1074).
When you select a root transaction frame (see page 1044) in graphical or list view from the Analyze
Transactions window, the transaction detail dialog displays with the path graph at the top.
You view the path graph from the Analyze Transactions window by:
Clicking a path in the graphical view
Clicking the transaction link from the Name column in the list view
The icons indicate the type of frame. Examples of the frame types are EJB, HTTP, JMS, REST, web
service, DevTest, and unknown. The DevTest frame type represents a step executing inside a test
case or virtual service.
General Path Information (see page 1076)
Frame Name (see page 1076)
Execution Time (see page 1077)
22-Jul-2016
1075/2016
Frame Name
The name of the frame appears below the icon.
The format depends on the type of frame.
The frame name for HTTP is the path portion of the URL. Paths that are created using the VS Traffic
to CAI Companion are indicated with the virtualized label in the component name. An example is
POST/itkoExamples/EJB3AccountControlBean(virtualized). See VS Traffic to CAI Companion (see
page 1232) for more information about using this companion.
The frame name for JDBC is SQL Activity (N), where N is the number of SQL statements that were
used to generate the frame.
The frame name for JMS consists of the following parts:
A string that identifies the type of operation. If the operation involves the production of a
message, the string is send:. If the operation involves the consumption of a message, the string is
recv:.
The name of the queue
(Optional) The name of the connection factory
An example is recv:queue/ORDERS.REQUEST@ConnectionFactory.
The frame name for JMS can also be DevTest. This name is used when a test case receives a JMS
message.
The frame name for RMI is the Java class and method that was executed.
The frame name for webMethods is the flow service name.
The frame name for WebSphere MQ consists of the following parts:
22-Jul-2016
1076/2016
Execution Time
The execution time appears below the frame name.
In certain scenarios, the execution time for the leftmost component is the time for the entire
transaction.
If the execution time is so low that it rounds down to zero, the value 0 ms is displayed.
22-Jul-2016
1077/2016
Frame Information
The lower area of the transaction detail dialog (see page 1074) displays information about the frame
that is selected in the path graph.
The Frame tab and the Log Messages tab appear for all frame types.
You can select and copy field information from the available tabs. To copy, select the information,
right-click, and select Copy. Keyboard shortcut keys can be used to copy and paste frame information
from the tabs.
Frame Tab (see page 1078)
Request Tab (see page 1079)
Response Tab (see page 1079)
Log Messages Tab (see page 1079)
XML Tab (see page 1080)
Exception Tab (see page 1080)
Payload Tab (see page 1080)
SQL Summary Tab (see page 1080)
Request Headers Tab (see page 1081)
Response Headers Tab (see page 1081)
Incoming Request Tab (see page 1081)
Outgoing Request Tab (see page 1081)
Frame Tab
The Frame tab shows the metadata values and the location values of the selected frame. The
following details are listed:
Frame Meta Values
Name: The name of the frame.
Tags: Any frame tags (see page 1367) that are associated with the frame.
Category: The category of the frame.
Start time: The time at which the frame began running.
Wall time: How much time it took to run the frame from start to finish. Also known as root frame
response time.
ID: The unique frame ID.
Parent ID: The parent frame ID of the current frame.
Location Values
Host: The name of the computer on which the frame ran.
22-Jul-2016
1078/2016
Request Tab
The Request tab displays the actual request that the selected frame sent. This tab appears only for
non-JMS and non-JDBC frames.
If a WebSphere MQ transaction includes a binary payload, the Request tab displays a humanreadable version of the payload. The nontext characters are removed. You can view the original
binary payload in the XML tab.
For CICS transactions, the raw data displays in hex format. The decoded text output on the right
depends on which EBCDIC code is selected.
Response Tab
The Response tab displays the actual response that the selected frame received. This tab appears
only for non-JMS and non-JDBC frames.
If a WebSphere MQ transaction includes a binary payload, the Response tab displays a humanreadable version of the payload. The nontext characters are removed. You can view the original
binary payload in the XML tab.
For CICS transactions, the raw data displays in hex format. The decoded text output on the right
depends on which EBCDIC code is selected.
22-Jul-2016
1079/2016
XML Tab
The XML tab displays the raw XML of the instrumentation response in the frame. This tab appears for
all frames other than JDBC frames.
The XML tab is additive. The frames to the right contain less information than the frames on the left.
The first frame contains the complete response.
Exception Tab
If the frame contains an exception, the Exception tab displays the stack trace.
This feature has the following prerequisites:
The capture level (see page 1052) of the Exception protocol must be set to Full Data for the agent.
The Capture all the supported exception frames property must be enabled for the agent. To
access this property in the Settings tab, select the Transactions category.
Payload Tab
The Payload tab displays the JMS payload. This tab appears only for JMS frames.
22-Jul-2016
1080/2016
22-Jul-2016
1081/2016
Note: Before you can share a point of interest, pin a transaction. For more information
about how to pin a transaction, see Pin and Unpin Transactions (see page 1081).
3. Right-click the transaction and select Share, Share Point of Interest to view the URL.
4. Click X to close the Share Point of Interest dialog.
Share a Link
You can view the link to the transaction to share it. The link contains the URL where the transactions
are located within CA Continuous Application Insight.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
The Analyze Transactions window displays in the list view by default.
3. Right-click the transaction and select Share, Share Link to view the URL.
4. You can go directly to the transaction by:
typing the URL in a web browser
highlighting the link, right-clicking, and selecting Go to http://<URL>
5. Click X to close the Share Link dialog.
1082/2016
The following graphic displays repeated paths that have been merged in the graphical view:
22-Jul-2016
1083/2016
Artifacts that are created using merged transactions are named with the transaction ID.
When creating baselines from merged transactions in the shelf, merged transaction can be viewed,
modified by order, and deleted.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
22-Jul-2016
1084/2016
Use the legend that is located in the path graph to view the traffic usage for a transaction path. The
following graphic displays the legend for the usage traffic:
The legend uses color to represent the transactions with the lowest to the highest traffic. The higher
the traffic is for a transaction, the thicker the line connecting the nodes become.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
22-Jul-2016
1085/2016
6. (Optional) Click
22-Jul-2016
1086/2016
The following graphic displays the Common APIs dialog, which provides a visual representation of the
producer and consumer relationship. The web service frame at the right is the producer.
1087/2016
Note: For transactions with SQL frames, only frames before the SQL frame can be set as
22-Jul-2016
1088/2016
The following options are available to configure parent and child keys:
Use Exact String
This option uses this string for stitching. For example, if you want to stitch transactions by
category.
Same as Parent Key
This option is available only for setting the child key. The child transaction frame inherits the
parent key information.
Using Built-in Regular Expression
These options are predefined expressions that are used to identify how transactions are stitched
together. The options are IPv6, IPv4, GUID, email, and URL.
Using Custom Regular Expression
This option lets you create a custom expression.
1089/2016
5.
4. To group rules, select the rule check box and click Group Payload Stitching Rules
5. To move a rule from a group, click Remove Rule from the Group
6. To ungroup all of the rules in a group, click Ungroup all items
.
.
Delete Transactions
Transactions with exceptions or bad data can be deleted from the database in the list view of the
Analyze Transactions window. You cannot delete transactions in the graphical view. Delete
transactions using the right-click method or using the More Actions
delete options.
Imported transactions and transactions with points of interests or tickets can be excluded from the
deletion process. You can export transactions before deleting them from the database.
Multiple transactions can take more time to delete. The Results transactions count at the top of the
Analyze Transactions window decreases as transactions are deleted.
Users with the following roles can delete transactions:
Power user
Super user
Administrator
22-Jul-2016
1090/2016
Note: To select a transaction, click next to the transaction link in the Name column.
Clicking the link opens the transaction details dialog.
Delete Selected
Option to delete all the manually selected transactions in the list.
Delete Page
Option to delete the current page of transactions without manually selecting any
transactions.
Delete All
Option to delete all transactions from the database without manually selecting every
transaction.
The Delete Transaction dialog displays. The checkbox for Exclude POI transactions and
Exclude ticketed/imported transactions is selected by default.
4. To delete transactions with POIs and tickets, clear the Exclude POI transactions checkbox.
5. To delete imported transactions or transactions with support tickets, clear the Exclude
ticketed/imported transactions checkbox.
6. To export transactions before deleting, select the Export before deleting checkbox and enter
the filename.
7. Click Delete.
8. Click OK to close the Information dialog.
9. Click Refresh
More Information:
Export Paths (see page 1092)
22-Jul-2016
1091/2016
Export Paths
You can export transaction paths into a zip file to be shared and imported. Transactions are exported
as XML files and are named using the transaction ID. Use the search refinements on the Analyze
Transactions search bar to narrow the transactions that display.
The following export options are available:
Export Selected exports the selected transactions that display in the list view.
You can export selected transactions by clicking More Actions
or by right-clicking the
transactions and selecting Export Selected. To select multiple transactions, hold down the Shift
key.
Export Page exports the page of transactions that display in the list view. A maximum of 500
merged transactions can be exported.
Note: When there are multiple pages of transactions, click More Actions
select Export Page for each page you want to export.
and
Export View exports the paths that display in the graphical view. A maximum of 500 merged
transactions can be exported.
Export All exports all the transactions that display based on the search results. If the number of
transaction exceeds 1000, the export will take longer to complete. A warning dialog displays to
enable you to continue or cancel the export.
Note: When using the Safari browser to export a transactions, by default the file is named
unknown without an extension. The Safari browser does not allow files name to be edited
when downloading. Ensure you add the .zip extension to the file name to import the
transaction. This behavior applies when using the export selected, export page, and
export all options to export transactions.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
2. Use the search refinements to find the transactions you want to export.
22-Jul-2016
3.
1092/2016
More Information:
Import Paths
You can import a zip file that contains transaction paths from various sources into the DevTest
database.
From the Analyze Transactions window, you can also import recorded transactions paths for use in
Document Transactions. The recorded transactions paths display in the Document Transactions and
Analyze Transactions window.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
22-Jul-2016
1093/2016
5. Click Refresh
to display the Splunk paths.
The imported paths from Splunk display at the top of the list.
Notes:
Microsoft Internet Explorer and Mozilla Firefox requires Adobe Reader to view the PDF.
For Google Chrome, enable either the Chrome PDF viewer or Adobe Reader.
PDF generation is not supported when running the DevTest Portal in HTTPS mode.
1094/2016
4. Point to the bottom, right of the browser to display the task bar.
The task bar contains options to zoom, save, and print.
5. To save the PDF file, click Save.
6. Enter the file name and click Save.
7. To print the PDF, click Print.
The print setup displays.
8. Click Print.
Shelve Transactions
From the Analyze Transactions window, select transactions to generate artifacts by shelving them.
When you shelve transactions, the frame is added to the shelf. From the shelf, you generate artifacts,
create documentation, and set points of interest. The types of artifacts that can be generated are
virtual services, baselines, data sets, and request/response pairs.
Transactions can be added to the shelf as individual frames, as all occurred transactions, and as
merged identical transactions.
For more information about working with transactions in the shelf, see Using the Shelf (see page 1102)
.
Note: When the login session expires or when the browser running DevTest Portal is closed
or refreshed, the transactions in the shelf are removed.
Transactions can be shelved from the graphical view and the list view from the Transactions details
dialog (see page 1074). Right-click a transaction and select one of the following shelving options:
Shelve Frame (see page 1095)
Shelve Frames (Advanced) (see page 1096)
Shelve All Occurred Transactions (see page 1097)
Shelve (X) Merged Transactions (see page 1097)
Shelve Frame
To add an individual frame to the shelf, right-click the frame and select Shelve Frame.
22-Jul-2016
1095/2016
22-Jul-2016
1096/2016
22-Jul-2016
1097/2016
The stateful baselines are not supported for merged transactions. You can create consolidated and
expanded baselines only.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
The Analyze Transactions window displays in the list view by default.
2. Click the merged transaction link in the Name column or click Graphical
22-Jul-2016
1098/2016
Baselines are created based on the root transaction frame. An expanded baseline is created for all
the frame types that support Application Test Steps. Another baseline is created for frame types that
only support Transaction Frame Steps. All other frame types that do not support an expanded
baseline are removed from the baseline creation.
The virtual services and baselines use the naming convention of
prefix_agent_Protocol_UTCTimeDataStamp. The default prefix is the user name and can be edited.
Note: CICS agents only support virtual service creation. A VRS or a copybook bundle file
must be used to create the virtual service.
More Information:
22-Jul-2016
1099/2016
22-Jul-2016
1100/2016
Transactions with log messages that contain warnings are yellow and exceptions, error log messages,
and response time violations are red.
Transactions that are annotated and pinned in the Analyze Transactions window appear in the Home
page, Points of Interests list.
Follow these steps:
1. Select Application Insight, Analyze Transactions from the left navigation menu.
The Analyze Transactions window displays the transactions in a graphical view.
2. Search for a transaction using the search refinement options.
22-Jul-2016
1101/2016
Note: When the login session expires or when the browser running DevTest Portal is closed
or refreshed, the transactions in the shelf are removed.
Shelf Dialog
The shelf dialog lets you search and manage shelved transactions and create artifacts.
22-Jul-2016
1102/2016
If a transaction with a point of interest (POI) is shelved, the name of the POI displays after the start
time in the shelf dialog.
Shelf Popup
The shelf popup provides a quick way to create artifacts without opening the shelf dialog.
To display the shelf popup, point to the shelf icon.
The following graphic displays the shelf popup:
A maximum of five transactions display at a time. When you delete a transaction by clicking X, the
next transaction displays.
More Information:
Work with Transactions in the Shelf (see page 1104)
Creating Virtual Services (see page 1117)
Creating Baselines (see page 1151)
Create Data Sets (see page 1199)
22-Jul-2016
1103/2016
22-Jul-2016
1104/2016
3. To view the POI in the Home page dashboard, select the Home tab and click
Generate Artifacts
You can generate the following business artifacts for transaction frames in the shelf:
Virtual services
Baselines
Data sets
Request/response pairs
The types of artifacts that can be generated are indicated with colored labels in the list of
transactions.
Follow these steps:
1. Open the shelf.
2. (Optional) Click X to delete any frames for which you do not want to create an artifact.
3. Click an artifact option and click Create.
4. Select a project, and edit the prefix name (optional).
5. Select an option to keep or delete transactions in the shelf after the artifact is created.
6. Click Create.
The Jobs in Progress dialog opens.
7. Use the job progress indicator tooltip to display information about the artifact.
The tooltip indicates if the artifact was generated successfully or unsuccessfully and includes
any error messages. The tooltip may contain a link to the location of virtual services,
baselines, and request/response pairs in the portal.
22-Jul-2016
1105/2016
Note: When creating virtual services, baselines, and data sets, there might be extra options
to configure. For example, you can select types of steps and can use magic dates when
creating baselines. Refer to the topics in the following list for detailed steps.
For detailed steps in creating specific types of artifacts, see the following topics:
Creating Virtual Services (see page 1117)
Creating Baselines (see page 1151)
Create Data Sets (see page 1199)
Creating R/R Pairs (see page 1200)
Note: If the portal is running in HTTPS mode, PDF generation is not supported.
You can create reports from transactions in the shelf. Ensure pop-ups are enabled in the browser to
display the report in a new browser window. You can print the report and can save it as a PDF
document.
The report includes the following information about the transaction frame and merged paths:
Agent name
Machine name
IP address
Agent version
Properties
Summary information such as the number of folds and response times
The agent boundary for the transactions displays in the Transactions Detail Information section at
the end of the report.
Follow these steps:
1. Open the shelf and click
22-Jul-2016
1106/2016
More Information:
Create Tickets in an Application (see page 1108)
Create Ticket From Recorded Transactions (see page 1211)
Email Settings for New Tickets (see page 1110)
Send Tickets to HP ALM - Quality Center (see page 1110)
Manage a Ticket (see page 1111)
Configure Browsers to Support Screenshots (see page 1116)
1107/2016
For the email functionality to work, the email settings (see page 1110) must be configured.
If you previously created a ticket for the application and you then configure the email settings, you
must restart the browser for the settings to take effect.
To enable the HP ALM - Quality Center functionality, see Send Tickets to HP ALM - Quality Center (see
page 1110).
Before you begin, open the Settings, Agents window in the DevTest Portal and ensure that the
capture level (see page 1052) for the HTTP Server protocol is set to Full Data. If the browser in which
you plan to open the ticket submission dialog is running, be sure to restart the browser.
See Configure Browsers to Support Screenshots (see page 1116) for information about supported
browser and how-to steps.
Follow these steps:
1. While pressing the Alt key, click anywhere in the application window.
22-Jul-2016
1108/2016
Note: For Java 7 Update 51 and later, you must configure the Java security for the
Take screenshot option to work.
To configure the security for the Java 7 Update 51 and later, follow these steps:
a. Open the Java Control Panel and click the Security tab.
b. Click Edit Site List... and enter http://<machine name>:<port>.
c. Click Add and OK.
5. If the functionality for sending tickets to HP ALM - Quality Center is enabled, select the Raise
this as a defect in Quality Center check box.
6. Click Submit.
7. If the functionality for sending tickets to HP ALM - Quality Center is enabled, do the following
actions:
a. Type the user name, password, domain, and project of HP ALM - Quality Center and
click Save.
b. If an additional set of fields appears, enter the required information and click Save.
A message indicates that the ticket was submitted.
8. To display the ticket in the Manage Tickets window, click View Ticket.
9. Click Close to close the ticket submission dialog.
10. To view the ticket in the New Ticket Alerts portlet of the Home page, click Refresh in the
22-Jul-2016
1109/2016
1110/2016
QC port
The port on which the HP ALM - Quality Center REST API is listening. For example:
8080
Keystore Configuration
For https connections, you select the Use SSL check box as noted in the procedure. In addition, you
must configure the keystore with the server certificate.
Connect to HP ALM server and export the server certificate. One way to perform this action is by
using the Certificate Export Wizard in Internet Explorer. The result is a file with the name that you
specify (for example, HPQC.cer).
Find the JRE that the target application server is using. Then import the server certificate into the
keystore that is associated with the Java Runtime Environment (JRE). The following example uses the
keytool utility, which is included in the JRE.
keytool.exe -import -trustcacerts -alias ALMCERT -keystore "..\lib\security"\cacerts file C:\HPQC.cer
Manage a Ticket
The Manage Tickets window lets you view all the tickets that were captured and stored in the CAI
database.
This page takes you through the steps of managing a ticket in CAI.
1. Search Tickets (see page 1112)
2. Identify Transaction Defects (see page 1112)
3. Obtain the Direct URL of a Ticket (see page 1113)
4. View the Transactions for a Ticket (see page 1113)
5. View Screen Shot for a Ticket (see page 1114)
6. Edit Ticket Information (see page 1114)
7. Generate Artifacts for a Ticket (see page 1115)
8. Generate Documentation for a Ticket (see page 1116)
22-Jul-2016
1111/2016
Search Tickets
You search for tickets to display the defects that are found during testing from the Manage Tickets
window. Tickets appear in descending order by date. The Manage Tickets window contains search
criteria for finding tickets in the CAI database.
You can find tickets using the following search criteria:
Reporter - the user who created the ticket
Status - new, identified, and closed
Duration of time - by minutes, hours, days, and all time
Advanced - start and end date, and start and end time
Search by entering text
The initial status of a ticket is New. When editing the ticket information, you can change the status to
Identified or Closed. Tickets that are new or updated display in the New Ticket Alerts portlet in the
Home page.
2. Click Graphical
from the Actions column.
The Transactions dialog opens with a visual representation of the transaction paths for the
ticket.
3. To mark a frame, right-click the frame and select Identify Problem (Update Ticket Status)
22-Jul-2016
1112/2016
2. Click Graphical
in the Actions column.
The path graph for the transaction displays.
3. Review the transaction.
4. (Optional) Right-click a frame and select from the following options:
Identify Problem (Update Ticket Status)
Generate All Artifacts
Generate Document
Unidentify Problem
22-Jul-2016
1113/2016
22-Jul-2016
1114/2016
Note: If you change the Status from New to Identified or Closed, the ticket is
removed from the New Tickets Alert portlet in the Home page dashboard.
22-Jul-2016
1115/2016
2. Click Graphical
, right-click a transaction, and select Generate All Artifacts.
The Generate All Artifacts dialog opens.
3. Select the type of artifact you want to generate and click Generate.
Click Advanced from the Generate All Artifacts dialog if you want to configure the options.
4. In the Select Project dialog, select a project from the drop-down list and click Create.
A confirmation dialog displays.
5. Click OK.
2. Click Graphical
1116/2016
Notes:
This feature requires a separate license.
For detailed information about service virtualization, see Using CA Service Virtualization
(see page 673).
When you generate the transactions, ensure that the capture levels (see page 1052) for the
appropriate protocols are set to Full Data.
You can create virtual services by using the following approaches:
Analyze Transactions window in the DevTest Portal
Document Transactions window in the DevTest Portal
CAI command-line tool
The procedures in this section describe how to create virtual services by using the shelf in the
Analyze Transactions window.
You cannot create virtual services for transaction frames that have a category of GUI.
22-Jul-2016
1117/2016
. You can
Note: You have the option of deleting any of the consolidated Web HTTP transactions
before creating the virtual service.
The following protocols are supported for consolidation when creating a virtual service:
REST: one virtual service
All SOAP: one virtual service
All HTTP: one virtual service
EJB: one virtual service per agent
JDBC: one virtual service per agent
JCA: one virtual service per agent
TIBCO: one virtual service per agent
Note: The JMS, WebSphere MQ, and SAP protocols are not supported.
22-Jul-2016
1118/2016
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. To use the settings in a VRS file (see page 1151), click Choose and select the file.
6. To use a copybook bundle file, perform the following steps:
a. Select Use Copybook Bundle and click the down arrow to select the file.
b. Select an encoding option from the drop-down list.
7. (Optional) To view and manage the consolidated frames, perform the following steps:
a. Click List frames to view the frames.
The frames are listed in the right pane.
b. Drag-and-drop the frames up and down the list to change the order.
c. Click X and click Continue to remove a frame from the listing.
8. Click Next.
9. Select the project where the virtual service is created and (optional) edit the name prefix. The
default prefix is the user name.
10. Perform one of the following steps:
To create the virtual service only, select Create.
To create and deploy the virtual service, select Create and deploy and enter the Group Tag
and Think Time Scale.
11. Select an option to keep or delete the transactions in the shelf once the virtual service is
created and click Finish.
The Jobs in Progress dialog opens.
12. Point to the tooltip to perform the following steps:
22-Jul-2016
1119/2016
3. To change the default name, select the name and make your edits, then click
save button
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. (Optional) To view and manage the consolidated frames, perform the following steps:
22-Jul-2016
a.
1120/2016
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
22-Jul-2016
1121/2016
The following graphic shows the service image that was generated. The service image contains a
stateless transaction. Notice that multiple methods are virtualized.
In the virtual service model, the Virtual Java Listener step contains the agent name and the EJB
name.
22-Jul-2016
1122/2016
Use the following procedure to create a virtual service from transactions that contain one or more
Java object frames.
A virtual service includes the responses that are sent for unknown conversational requests and
unknown stateless requests. When you create a virtual service, the following options might be
available for configuring the body of these responses:
Report "No Match"
Causes an exception to be raised in the virtualized application.
Bypass Virtual Service
Allows the original request to pass straight through, as if the class and method were not
virtualized at all.
Follow these steps:
1. Add a Java transaction frame to the shelf.
2. Open the shelf and click
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. (Optional) To view and manage the consolidated frames, perform the following steps:
22-Jul-2016
1123/2016
10.
3. To change the default name, select the name and make your edits, then click
save button
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
22-Jul-2016
1124/2016
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
1125/2016
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. (Optional) To view and manage the consolidated frames, perform the following steps:
1126/2016
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
Note: This feature is supported for configurations in which JNDI is used to obtain the JMS
connection factory. This feature is also supported for configurations in which a direct API
from IBM WebSphere MQ is used to obtain the JMS connection factory.
3. To change the default name, select the name and make your edits, then click
save button
to save.
4. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
5. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
6. (Optional) To view and manage the consolidated frames, perform the following steps:
22-Jul-2016
a.
1127/2016
3. To change the default name, select the name and make your edits, then click
save button
to save.
22-Jul-2016
1128/2016
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
22-Jul-2016
1129/2016
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. (Optional) To view and manage the consolidated frames, perform the following steps:
1130/2016
10.
DevTest Solutions - 9.5
To create and deploy the virtual service, select Create and deploy and enter the Group Tag
and Think Time Scale.
11. Select an option to keep or delete the transactions in the shelf once the virtual service is
created and click Finish.
The Jobs in Progress dialog opens.
12. Point to the tooltip to perform the following steps:
Review the information about the virtual service and error messages.
Select the link to navigate to the virtual service or the deployment.
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
Notes:
ERPConnect is not included with DevTest Solutions.
For information about deploying the virtual service, see Using CA Service Virtualization
(see page 673).
22-Jul-2016
1131/2016
1132/2016
3. To change the default name, select the name and make your edits, then click
save button
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
22-Jul-2016
6.
1133/2016
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. Click Next.
8. Select the project where the virtual service is created and (optional) edit the name prefix. The
default prefix is the user name.
9. Perform one of the following steps:
To create the virtual service only, select Create.
To create and deploy the virtual service, select Create and deploy and enter the Group Tag
and Think Time Scale.
10. Select an option to keep or delete the transactions in the shelf once the virtual service is
created and click Finish.
The Jobs in Progress dialog opens.
11. Point to the tooltip to perform the following steps:
Review the information about the virtual service and error messages.
Select the link to navigate to the virtual service or the deployment.
22-Jul-2016
1134/2016
Note: For information about installing and configuring the agent, see Agents (see page 1313)
. For information about deploying the virtual service, see Using CA Service Virtualization
(see page 673).
2.
22-Jul-2016
1135/2016
3. To change the default name, select the name and make your edits, then click
save button
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. Click Next.
8. Select the project where the virtual service is created and (optional) edit the name prefix. The
default prefix is the user name.
9. Perform one of the following steps:
To create the virtual service only, select Create.
To create and deploy the virtual service, select Create and deploy and enter the Group Tag
and Think Time Scale.
10. Select an option to keep or delete the transactions in the shelf once the virtual service is
created.
11. Select the project where the virtual service will be created and click Finish.
The Jobs in Progress dialog opens.
12. Point to the tooltip to perform the following steps:
Review the information about the virtual service and error messages.
Select the link to navigate to the virtual service or the deployment.
22-Jul-2016
1136/2016
The key that begins with destination. and ends with a number specifies which destination to
virtualize.
To virtualize multiple destinations, add a destination key for each one. You can use any number, as
long as the number is unique in the Protocol Configuration dialog.
To virtualize all destinations, remove the destination key.
You can ignore the keys that resemble Java class names.
22-Jul-2016
1137/2016
Note: For information about installing and configuring the agent, see Agents (see page 1313)
. For information about deploying the virtual service, see Using CA Service Virtualization
(see page 673).
22-Jul-2016
1138/2016
The following graphic shows a path graph that includes SAP frames. This path graph illustrates the
standard SAP JCo pattern of getting a function and then executing the function.
When the virtualization artifacts are generated, CAI checks the destination name of the selected SAP
component. CAI then searches all of the visible paths for SAP components that have this destination.
These SAP components are used to create the virtual service.
To view the destination name of the selected SAP component, click the XML tab in the transaction
details dialog.
Follow these steps:
1. Add an SAP transaction frame to the shelf.
2. Open the shelf and click
3. To change the default name, select the name and make your edits, then click
22-Jul-2016
1139/2016
save button
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. Click Next.
8. Select the project where the virtual service is created and (optional) edit the name prefix. The
default prefix is the user name.
9. Perform one of the following steps:
To create the virtual service only, select Create.
To create and deploy the virtual service, select Create and deploy and enter the Group Tag
and Think Time Scale.
10. Select an option to keep or delete the transactions in the shelf once the virtual service is
created.
11. Select the project where the virtual service will be created and click Finish.
The Jobs in Progress dialog opens.
12. Point to the tooltip to perform the following steps:
Review the information about the virtual service and error messages.
Select the link to navigate to the virtual service or the deployment.
22-Jul-2016
1140/2016
The key that begins with destination. and ends with a number specifies which destination to
virtualize.
To virtualize multiple destinations, add a destination key for each one. You can use any number, as
long as the number is unique in the Protocol Configuration dialog.
To virtualize all destinations, remove the destination key.
You can ignore the keys that resemble Java class names.
1141/2016
Note: For detailed information about installing and configuring the DevTest Java Agent, see
Agents (see page 1313). For detailed information about using the Virtual Service Image
Recorder and deploying virtual services, see Using CA Service Virtualization (see page 673).
4. To change the default name, select the name and make your edits, then click
to save.
22-Jul-2016
1142/2016
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
22-Jul-2016
1143/2016
The File Poller activity monitors a text file. When the file is changed, the activity starts the process.
The JMS Queue Sender activity sends a message to the specified queue.
The following graphic shows a service image that the Virtual Service Image Recorder generated. A
conversation with four nodes appears in the Transactions tab. The four nodes correspond to the four
activities in the process definition.
Each node in the conversation includes an operation field. The value of this field consists of the fully
qualified process name and the activity name. In the preceding graphic, the value for the selected
node is Tibco:VSE/Processes/AddUser.JMS Queue Sender.
The virtual service model is the default for the Java transport protocol.
22-Jul-2016
1144/2016
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
5. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
6. (Optional) To view and manage the consolidated frames, perform the following steps:
22-Jul-2016
10.
1145/2016
10. Select an option to keep or delete the transactions in the shelf once the virtual service is
created and click Finish.
The Jobs in Progress dialog opens.
11. Point to the tooltip to perform the following steps:
Review the information about the virtual service and error messages.
Select the link to navigate to the virtual service or the deployment.
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
5. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
6. (Optional) To view and manage the consolidated frames, perform the following steps:
1146/2016
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
22-Jul-2016
1147/2016
3. To change the default name, select the name and make your edits, then click
to save.
4. If the Report "No Match" and Bypass Virtual Service options are available, configure the
response for unknown requests.
5. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
6. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
7. (Optional) To view and manage the consolidated frames, perform the following steps:
1148/2016
12.
Note: For more information about consolidated transactions, see Creating Virtual Services
(see page 1117).
Note: If you select any of the webMethods Integration Server frames, you can view the
pipeline data in the transaction detail dialog.
When a path graph has multiple webMethods Integration Server frame, you must select one frame
for virtualization. The decision of which frame to select depends on the system under test. This
example could result in the following decisions:
To ensure that your software interfaces with a webMethods process, select the leftmost
webMethods Integration Server frame.
To remove the database, select the webMethods Integration Server frame that directly calls the
database.
3. To change the default name, select the name and make your edits, then click
22-Jul-2016
1149/2016
to save.
4. If the Treat all transactions as stateless check box is editable and you want the virtual service
to contain only stateless transactions, ensure that the check box is selected.
5. (Optional) When you have a custom data protocol or chain of data protocols needed to create
your virtual service, you can reference an existing VRS file (see page 1151) and have them
applied when you generate your virtual service. Click Choose and select the file.
6. (Optional) To view and manage the consolidated frames, perform the following steps:
22-Jul-2016
1150/2016
The transport protocol in the .vrs file must be the same as the protocol of the selected frames to be
virtualized.
The base path in HTTP/S recording session files is ignored. Instead, the base path is calculated based
on the selected frames to be virtualized.
Creating Baselines
A baseline is a test case that helps you determine whether a system is still functioning the same way
at a later date.
The following graphic provides a high-level view of how most baselines work.
22-Jul-2016
1151/2016
The left portion shows the initial regression cycle. Manual testing is performed on a system. CAI
captures the activity and creates transactions, which are then used to generate baselines.
The right portion shows the subsequent automated regression tests. The baselines are run as
necessary against the system under test.
Each baseline contains information about the expected response from the system. During an
automated regression cycle, the baseline compares the expected response with the actual response.
If the responses do not match, the differences are highlighted.
When you generate the transactions, ensure that the capture levels (see page 1052) for the
appropriate protocols are set to Full Data.
You can create baselines by using any of the following approaches:
Analyze Transactions window in the DevTest Portal
CA Service Virtualization Recorder (see page 736) in the DevTest Portal
CAI command-line tool
The procedures in this section describe how to create baselines by using the shelf in the Analyze
Transactions window.
You cannot create baselines for transaction frames that have a category of GUI.
When creating a baseline, you can use a test template (see page 1192) to include additional steps.
22-Jul-2016
1152/2016
Baseline Types
You can create the following types of baselines:
Stateful
Data-driven
Expanded
The naming convention for a baseline is (prefix)_(transactionframename)-(baselinetype)-(date)(time). The valid values of the baseline type portion are S (stateful), D (data-driven), and E
(expanded). For example, the following name is for an expanded baseline:
admin_1445436734664_lisabankbuttonclick.do-E-20151020-145034
If you add a merged (see page 1083) transaction frame to the shelf, you cannot create a stateful
baseline. You can create data-driven and expanded baselines.
In some cases, CAI automatically selects a baseline type for you. For example, if you generate all
artifacts for an agent (see page 1098) in the Analyze Transactions window, CAI selects the appropriate
baseline type.
Stateful Baselines (see page 1153)
Data-driven Baselines (see page 1154)
Expanded Baselines (see page 1154)
Stateful Baselines
A stateful baseline is a baseline test case that applies to an entire conversation or session, instead of
one of its transactions. A conversation is a set of transactions in a session.
Stateful baselines are supported for the following categories of transaction frame:
EJB
REST
Web HTTP
Web service
The following graphic shows a stateful baseline.
22-Jul-2016
1153/2016
Data-driven Baselines
A data-driven baseline is composed of a single test case. The test case includes a test step that reads
from a Large Data data set.
The following graphic shows a data-driven baseline.
Data-driven baselines are useful when you need to modify a baseline after it is generated.
For example, assume that you shelve a merged transaction frame that has a large number of
repeated paths. If you create an expanded baseline, you might need to make the same change to all
the test cases in the baseline. If you create a data-driven baseline, you can make the change just
once.
Expanded Baselines
An expanded baseline is composed of a suite of test cases and a suite document for running the test
cases.
In DevTest Workstation, the test cases are located in the Baselines folder of the Projects panel. The
suite document is located in the Suites folder.
The following graphic shows a test case in an expanded baseline.
22-Jul-2016
1154/2016
EJB Baselines
This section contains the following pages that provide information about EJB baselines:
Generate an EJB Baseline (see page 1155)
EJB Baseline Contents (see page 1157)
Workaround for EJB Baseline Over SSL on WebSphere App Server 8.5 (see page 1158)
save button
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode field is available, select the baseline type (see page 1153).
6. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
22-Jul-2016
1155/2016
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
7. (Optional) Configure the baseline to use magic dates.
Apply magic dates to test cases
Converts the date strings in the baseline test case or suite to variable definition strings.
For example, instead of a string that contains a specific date and time, the string can
contain a function that specifies seven days from the current date and time. This behavior
is equivalent to the doDateDeltaFromCurrent form of magic dates in CA Service
Virtualization. If this option is unsupported, the option does not appear.
8. (Optional) Click Choose File and select a test template (see page 1192) for the baseline.
9. If the following fields are available for editing, configure them:
JNDI Factory
The JNDI factory class to use when generating EJB baseline tests.
JNDI URL
The JNDI URL to use when generating EJB baseline tests.
Security Principal
The JNDI user to use when generating EJB baseline tests.
Security Credentials
The JNDI password to use when generating EJB baseline tests.
10. (Optional) To view and manage merged frames, perform the following steps:
1156/2016
Additional Steps for JBoss AS 7.3, JBoss EAP 6.2, and WildFly 8.2
If you want to generate an EJB baseline with the Use Application Test Steps option on the listed
JBoss platforms, additional steps are required.
Before you generate the baseline, copy the following files to the LISA_HOME\hotDeploy directory:
Application JAR files for the EJB under test
jboss-client.jar file
Before you run the baseline, copy the jboss-ejb-client.properties file to the LISA_HOME\hotDeploy
directory.
The following example shows the format of the jboss-ejb-client.properties file.
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=10.20.30.40
remote.connection.default.port=4447
remote.connection.default.connect.options.org.xnio.Options.
SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=JBossApplicationUser
remote.connection.default.password=JBossApplicationPassword
The default port number for JBoss AS 7.3 and JBoss EAP 6.2 is 4447. The default port number for
WildFly 8.2 is 8080.
If the JBoss server is remote from the DevTest installation from where you are testing, the username
and password are mandatory. If the JBoss server and the system under test are the same, the
username and password are not mandatory.
For more information about the jboss-ejb-client.properties file, see the JBoss documentation.
If the JBoss server is remote, ensure that the JBoss server is bound to a network interface that can be
accessed from the remote system under test and not just localhost, which is the default. Typically,
starting JBoss with the -b 0.0.0.0 option will bind to all local interfaces.
1157/2016
Workaround for EJB Baseline Over SSL on WebSphere App Server 8.5
WebSphere Application Server 8.5 was released with SSL enabled by default for RMI/IIOP and EJB
connections. As a result, creating and running EJB baselines on WebSphere Application Server 8.5 will
not succeed.
To work around this problem, use one of the following approaches.
Approach 1
Disable the SSL required setting on WebSphere Application Server.
Follow these steps:
1. Login to the WebSphere administrative console.
2. Go to Security, Global Security, RMI/IIOP security, CSIv2 inbound communications.
3. Set the value of the Transport field to SSL-supported.
4. Go to Security, Global Security, RMI/IIOP security, CSIv2 outbound communications.
5. Set the value of the Transport field to SSL-supported.
Approach 2
Configure your client to handle SSL-enabled connection.
The default password for the IBM truststore is WebAS.
On a base application server, the default key and truststores are stored in the node directory of the
configuration repository. For example, the default key.p12 and trust.p12 stores are created with the
AppSrv01 profile name, the myhostNode01Cell name, and the myhostNode01 node name.
22-Jul-2016
1158/2016
For a standard WebSphere Application Server installation with a standalone application server
profile, the key and truststores are in the following locations:
C:
\WebSphere\AppServer\profiles\AppSrv01\config\cells\myhostNode01Cell\nodes\myhostNode01\key.
p12
C:
\WebSphere\AppServer\profiles\AppSrv01\config\cells\myhostNode01Cell\nodes\myhostNode01\trust.
p12
The key.p12 file is optional and can be ignored.
Follow these steps:
1. Run the following command on the WebSphere Application Server computer to convert the
truststore file from PKCS12 format to JKS format:
On UNIX:
./jre/bin/keytool -importkeystore -srckeystore truststore -srcstoretype
PKCS12 -deststoretype JKS -destkeystore trust.jks
On Windows:
.\jre\bin\keytool -importkeystore -srckeystore truststore -srcstoretype
PKCS12 -deststoretype JKS -destkeystore trust.jks
Truststore specifies the name of the truststore file that is specific for your installation, for
example, trust.p12.
When prompted for the destination keystore password, specify something at least eight
characters long. You will need this password when you edit the ssl.client.props file on the
WebSphere Application Server computer.
2. Create a directory on the DevTest computer to store the trust.jks file that you created in the
previous step. Ensure that the full path to the directory does not contain spaces, for example:
C:\WAS_security.
3. Copy the trust.jks file to the directory that you created.
4. Copy the ssl.client.props and sas.client.props files located at C:
\WebSphere\AppServer\profiles\AppSrv01\profiles\AppSrv01\properties to a temporary
directory.
5. Open the copied ssl.client.props file and locate the following property:
com.ibm.ssl.trustStorePassword={xor}CDo9Hgw=
22-Jul-2016
1159/2016
7.
c. Replace the following occurrences in the file with the indicated value:
IbmPKIX with SunX509
IbmX509 with SunX509
IBMJSSE2 with SunJSSE
SSL_TLS with SSL
PKCS12 with JKS
IBMJCE with SUN
d. Change the property value for com.ibm.ssl.enableSignerExchangePrompt to false,
instead of gui:
com.ibm.ssl.enableSignerExchangePrompt=false
10. Copy the sas.client.props file from the WebSphere Application Server computer to the agent
installation directory on the DevTest computer.
11. Change the property value for com.ibm.CORBA.loginSource in the copied sas.client.props file
to none, instead of prompt (standard value):
com.ibm.CORBA.loginSource=none
22-Jul-2016
1160/2016
JMS Baselines
JMS baselines are supported for configurations in which JNDI is used to obtain the JMS connection
factory.
JMS baselines are also supported for configurations in which a direct API from IBM WebSphere MQ,
Java CAPS, SonicMQ, or TIBCO is used to obtain the JMS connection factory.
Note: If a service or client reuses or forwards JMS message objects without changing them,
the behavior of CA Continuous Application Insight is undefined.
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode field is available, select the baseline type (see page 1153).
6. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
22-Jul-2016
1161/2016
1162/2016
Duplicate Nodes
Under some circumstances, the path graph contains two adjacent frames that represent the same
produce or consume operation. The names of the adjacent frames both begin with either send: or
recv:.
If the first two frames in the path graph begin with send:, select the first of the frames.
If the first two frames in the path graph begin with recv:, select the second of the frames.
22-Jul-2016
1163/2016
REST Baselines
This section contains the following pages that provide information about REST baselines:
Generate a REST Baseline (see page 1164)
REST Baseline Contents (see page 1167)
HTTP Client Calls (see page 1168)
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode field is available, select the baseline type (see page 1153).
6. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
7. If the stateful baseline fields are available, configure them as needed:
Parameter Level
Specifies whether to enable parameterization and, if so, whether to match on value only
or both key and value. The default is Disable. When the Database Validation checkbox is
selected, the Parameter Level field is disabled and displays the Value option.
22-Jul-2016
1164/2016
Http User
Specifies the web application user name. CAI encrypts the value and adds the result to the
Authorization header field in the baseline.
Http Password
Specifies the web application user password. CAI encrypts the value and adds the result to
the Authorization header field in the baseline.
Assertion Option
Lets you add one or two assertions to the baseline.
The first assertion that you can add is named Assert Response Code Equals. The second
assertion that you can add is named Assert Response Equals or Assert Response Contains.
For each assertion, you specify what happens when the assertion returns false. You can
select to fail the test, generate an error, or generate a warning.
8. (Optional) Configure the baseline to use magic dates.
Apply magic dates to test cases
Converts the date strings in the baseline test case or suite to variable definition strings.
For example, instead of a string that contains a specific date and time, the string can
contain a function that specifies seven days from the current date and time. This behavior
is equivalent to the doDateDeltaFromCurrent form of magic dates in CA Service
Virtualization. If this option is unsupported, the option does not appear.
9. (Optional) To configure the baseline to validate (see page 1189) any database inserts, updates,
and deletes, select the Database Validation check box.
10. (Optional) Click Choose File and select a test template (see page 1192) for the baseline.
11. (Optional) To view and manage merged frames, perform the following steps:
22-Jul-2016
1165/2016
16. Point to the tooltip and click the link to navigate to the location of the artifact or to view error
messages.
If you set the parameter level to value only, CAI examines the following items: a, templates, 4, admin
, demo_02, and 3.
If you set the parameter level to key and value, CAI examines the following items: user/admin, name
/demo_02, and applicationId/3.
In the URL, the first element after the server and port is ignored.
Boolean types are ignored.
Assume that the request has the following XML body:
<addUser xmlns="http://ejb3.examples.itko.com/" userID=123>
<username xmlns="">webapp-1381707309</username>
<password xmlns="">example-pwd</password>
</addUser>
If you set the parameter level to value only, CAI examines the following items: 123, webapp1381707309, and example-pwd.
If you set the parameter level to key and value, CAI examines the following items: userID/123,
username/webapp-1381707309, and password/example-pwd.
When common items are found, CAI creates one or more parameters. Each parameter is stored in a
data set or defined in a filter. These examples show the format of the parameters:
Step1_name_1
Step1_param_2
Step1_url_param_3
Step1_rsp.filter_param_4
Step2_param_5
22-Jul-2016
1166/2016
The parameters can be used in various parts of the baseline. This example shows a parameter in the
URL field of a REST step:
http://{{WSSERVER}}:{{WSPORT}}/TestAppParameter/rest/testmethods/{{Step1_url_param_3}}
The following properties let you configure the minimum length and exclusion strings:
lisa.pathfinder.stateful.baseline.parameter.string.min.length
lisa.pathfinder.stateful.baseline.parameter.string.exclusion
For more information about these properties, see DevTest Property File (lisa.properties) (see page
1716).
If you create a data-driven baseline from the frame, CAI adds DevTest parameters to the query
portion of the URL. For example:
http://{{SERVER}}:{{PORT}}/lisabank/createuser.do?roleAdmin={{roleAdmin}}&password=
{{password}}&firstname={{firstname}}...
Notice that only the values are parameterized. The keys are left intact.
To view the URL and the parameters, go to DevTest Workstation and open the Large Data data set in
the baseline.
1167/2016
If the registry is running when you update the rules.xml file, restart the registry.
Forcing the PUT and DELETE calls to be categorized as HTTP is not supported.
1168/2016
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode fields are available, select the baseline type (see page 1153).
6. (Optional) Configure the baseline to use magic dates.
Apply magic dates to test cases
Converts the date strings in the baseline test case or suite to variable definition strings.
For example, instead of a string that contains a specific date and time, the string can
contain a function that specifies seven days from the current date and time. This behavior
is equivalent to the doDateDeltaFromCurrent form of magic dates in CA Service
Virtualization. If this option is unsupported, the option does not appear.
7. (Optional) Click Choose File and select a test template (see page 1192) for the baseline.
8. (Optional) To view and manage merged frames, perform the following steps:
22-Jul-2016
13.
1169/2016
13. Point to the tooltip and click the link to navigate to the location of the artifact or to view error
messages.
1170/2016
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode field is available, select the baseline type (see page 1153).
6. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
7. If the stateful baseline fields are available, configure them as needed:
Http User
Specifies the web application user name. CAI encrypts the value and adds the result to the
Authorization header field in the baseline.
Http Password
Specifies the web application user password. CAI encrypts the value and adds the result to
the Authorization header field in the baseline.
Assertion Option
Lets you add one or two assertions to the baseline.
The first assertion that you can add is named Assert Response Code Equals. The second
assertion that you can add is named Assert Response Equals or Assert Response Contains.
For each assertion, you specify what happens when the assertion returns false. You can
select to fail the test, generate an error, or generate a warning.
8. (Optional) Configure the baseline to use magic dates.
22-Jul-2016
1171/2016
1172/2016
If you create a data-driven baseline from the frame, CAI adds DevTest parameters to the query
portion of the URL. For example:
http://{{SERVER}}:{{PORT}}/lisabank/createuser.do?cmd={{cmd}}&pwd={{pwd}}&user=
{{user}}
Notice that only the values are parameterized. The keys are left intact.
To view the URL and the parameters, go to DevTest Workstation and open the Large Data data set in
the baseline.
The XML representation of a Web HTTP POST transaction frame with the application/x-www-formurlencoded content type can have key/value pairs in the request body. For example:
22-Jul-2016
1173/2016
<req>
<![CDATA
[username=test5&password=test5&confirmpassword=test5&firstname=test5&lastname=test5&ro
leAdmin=on&useremail=test5%40company.com&phone=1234567]]>
</req>
If you create a data-driven baseline from the frame, CAI replaces the keys and values with DevTest
parameters.
To view the parameters and their definitions, go to DevTest Workstation and open the baseline. As
shown in the following graphic, the parameters appear in the POST Parameters section of the HTTP
/HTML Request step.
22-Jul-2016
1174/2016
If the registry is running when you update the rules.xml file, restart the registry.
Forcing the PUT and DELETE calls to be categorized as HTTP is not supported.
22-Jul-2016
1175/2016
, then click
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode field is available, select the baseline type (see page 1153).
6. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
7. If the stateful baseline fields are available, configure them as needed:
Parameter Level
Specifies whether to enable parameterization and, if so, whether to match on value only
or both key and value. This field is available when there are REST and Web Service
transactions included. The default is Disable. When the Database Validation checkbox is
selected, the Parameter Level field is disabled and displays the Value option.
Http User
Specifies the web application user name. CAI encrypts the value and adds the result to the
Authorization header field in the baseline.
Http Password
Specifies the web application user password. CAI encrypts the value and adds the result to
the Authorization header field in the baseline.
Assertion Option
Lets you add one or two assertions to the baseline.
The first assertion that you can add is named Assert Response Code Equals. The second
assertion that you can add is named Assert Response Equals or Assert Response Contains.
For each assertion, you specify what happens when the assertion returns false. You can
select to fail the test, generate an error, or generate a warning.
8. (Optional) Configure the baseline to use magic dates.
Apply magic dates to test cases
Converts the date strings in the baseline test case or suite to variable definition strings.
For example, instead of a string that contains a specific date and time, the string can
contain a function that specifies seven days from the current date and time. This behavior
is equivalent to the doDateDeltaFromCurrent form of magic dates in CA Service
Virtualization. If this option is unsupported, the option does not appear.
22-Jul-2016
1176/2016
If you set the parameter level to value only, CAI examines the following items: 123, webapp1381707309, and example-pwd.
22-Jul-2016
1177/2016
If you set the parameter level to key and value, CAI examines the following items: userID/123,
username/webapp-1381707309, and password/example-pwd.
When common items are found, CAI creates one or more parameters. Each parameter is stored in a
data set or defined in a filter. These examples show the format of the parameters:
Step1_name_1
Step1_param_2
Step1_url_param_3
Step1_rsp.filter_param_4
Step2_param_5
The parameters can be used in various parts of the baseline. This example shows a parameter in the
Raw XML tab of a Web Service Execution (XML) step:
<username xmlns="">{{Step1_param_1}}</username>
The following properties let you configure the minimum length and exclusion strings:
lisa.pathfinder.stateful.baseline.parameter.string.min.length
lisa.pathfinder.stateful.baseline.parameter.string.exclusion
For more information about these properties, see DevTest Property File (lisa.properties) (see page
1716).
22-Jul-2016
1178/2016
webMethods Baselines
This section contains the following pages that provide information about webMethods baselines:
Generate a webMethods Baseline (see page 1180)
webMethods Baseline Contents (see page 1182)
22-Jul-2016
1179/2016
to save.
4. Click the plus sign that appears to the left of the name.
5. If the creation mode field is available, select the baseline type (see page 1153).
6. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
7. (Optional) Configure the baseline to use magic dates.
Apply magic dates to test cases
Converts the date strings in the baseline test case or suite to variable definition strings.
For example, instead of a string that contains a specific date and time, the string can
contain a function that specifies seven days from the current date and time. This behavior
is equivalent to the doDateDeltaFromCurrent form of magic dates in CA Service
Virtualization. If this option is unsupported, the option does not appear.
8. (Optional) Click Choose File and select a test template (see page 1192) for the baseline.
22-Jul-2016
1180/2016
Note: If you select any of the webMethods Integration Server frames, you can view the
pipeline data in the transaction detail dialog.
When a path graph has multiple webMethods Integration Server frames, you must select one frame
for baselining. Typically, you select the entry point. In this example, you would select the leftmost
webMethods Integration Server frame.
22-Jul-2016
1181/2016
WebSphere MQ Baselines
This section contains the following pages that provide information about WebSphere MQ baselines:
Generate a WebSphere MQ Baseline (see page 1182)
WebSphere MQ Baseline Scenarios (see page 1184)
WebSphere MQ Baseline Properties (see page 1185)
WebSphere MQ Baseline Contents (see page 1185)
22-Jul-2016
4.
1182/2016
to save.
6. Click the plus sign that appears to the left of the name.
7. If the creation mode field is available, select the baseline type (see page 1153).
8. If the step generation field is available, select one of the following options:
Use Application Test Steps
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
9. (Optional) Configure the baseline to use magic dates.
Apply magic dates to test cases
Converts the date strings in the baseline test case or suite to variable definition strings.
For example, instead of a string that contains a specific date and time, the string can
contain a function that specifies seven days from the current date and time. This behavior
is equivalent to the doDateDeltaFromCurrent form of magic dates in CA Service
Virtualization. If this option is unsupported, the option does not appear.
10. (Optional) Click Choose File and select a test template (see page 1192) for the baseline.
11. (Optional) To view and manage merged frames, perform the following steps:
1183/2016
Note: DevTest can behave as if it is an agent-enabled client. This behavior occurs when a
test case uses an IBM WebSphere MQ step to invoke the service.
22-Jul-2016
1184/2016
Note: For detailed information about this file, see DevTest Java Agent (see page 1313).
Before you create a WebSphere MQ baseline, you can add the QUEUE_REQUEST_MATCHES and
QUEUE_RESPONSE_MATCHES properties to the rules.xml file. These properties indicate which
queues are for requests and which queues are for responses.
The QUEUE_REQUEST_MATCHES and QUEUE_RESPONSE_MATCHES properties are optional. These
properties are necessary only if the agent cannot determine on its own whether a message is a
request or a response.
If you include these properties, the property names must be followed by a colon and the actual
queue name. The value of each property is a period followed by an asterisk. For example:
<propertykey="QUEUE_REQUEST_MATCHES:ORDERS.REQUEST"value=".*"/><propertykey="
QUEUE_RESPONSE_MATCHES:ORDERS.RESPONSE"value=".*"/>
1185/2016
Binary payloads affect the structure of a consolidated WebSphere MQ baseline. The baseline has the
following steps:
A do-nothing step that reads from a Large Data data set
A Java Script step that decodes the request payload from Base64 notation into an array of bytes
A WebSphere MQ step that sends the request
A WebSphere MQ step that receives the response
A Java Script step that encodes the response payload from an array of bytes into Base64 notation
The Large Data data set includes two versions of the original request payload: a human-readable
version and the Base64 representation.
The Large Data data set includes two versions of the original response payload: a human-readable
version and the Base64 representation.
The second Java Script step includes an assertion with the name Check Base64 Response. This
assertion verifies that the Base64 representation of the actual response matches the Base64
representation of the expected response. If the responses do not match, the test generates an error.
The test cases in an expanded WebSphere MQ baseline are similar to consolidated WebSphere MQ
baselines. However, they do not include a Large Data data set. The data is stored in the steps instead.
For binary payloads, the test cases have the following steps:
A Parse Text as Response step that contains a Base64 representation of the original request
payload
An Output Log Message step that writes a human-readable version of the original request
payload to the log file
A Java Script step that decodes the actual request payload from Base64 notation into an array of
bytes
A WebSphere MQ step that sends the request
A WebSphere MQ step that receives the response
22-Jul-2016
1186/2016
Generic Baselines
The term generic baseline refers to baselines that are generated for protocols other than the
following protocols:
EJB
JMS
REST
TIBCO ActiveMatrix BusinessWorks
TIBCO Enterprise Message Service (EMS)
Web HTTP
Web service
webMethods Integration Server
WebSphere MQ
This section contains the following pages:
Generate a Generic Baseline (see page 1187)
Generic Baseline Contents (see page 1189)
3. To change the default name, select the name and make your edits, then click
to save.
4. Click the plus sign that appears to the left of the name.
22-Jul-2016
1187/2016
22-Jul-2016
1188/2016
Database Validation
When creating a baseline from DevTest Portal or the CAI command-line tool, you can indicate that
the baseline will perform database validation. One or more steps are added to the baseline to
confirm that any inserts, updates, and deletes are done successfully.
You can use this feature with stateful and expanded baselines, but not with data-driven baselines. A
data-driven baseline consolidates all transactions into one step, and uses a data set to store the data
for each transaction. This behavior is incompatible with the database validation process.
You can use this feature with the following protocols:
REST
Web HTTP
Web service
If you enable database validation in DevTest Portal, the Parameter Level field is disabled because the
only valid setting is Value.
Supported Databases (see page 1189)
Supported Data Types (see page 1190)
Supported SQL (see page 1191)
Database Validation Steps (see page 1191)
Supported Databases
The following databases and drivers are supported:
22-Jul-2016
1189/2016
1190/2016
Supported SQL
The following SQL formats are supported:
Insert into {{table}} values ({{value1}}, {{ value2}});
Insert into {{table}} ({{column1}}, {{column2}}) values ({{value1}}, {{ value2}});
Insert into {{table}} ({{column1}}, {{column2}}) values (?, ?);
Insert into {{table1}} ({{column1}}, {{column2}}) (select {{ column3}}, {{ column4}} from {{table2}}
where {{condition}});
Insert into {{table1}} ({{column1}}, {{column2}}) (select * from {{table2}} where {{condition}});
Update {{table}} set {{column1}}={{value1}}, {{column2}}={{value2}} where {{condition}}
Update {{table}} set {{column1}}={{value1}}, {{column2}}={{value2}} where {{condition with
column1}}
Update {{table}} set {{column1}}={{column2}} where {{condition}}
Update {{table}} set {{column1}}=?, {{column2}}=? where {{column3}}=?
Delete from {{table}} where {{condition}}
Delete from {{table}} where {{column1}}=?
22-Jul-2016
1191/2016
The name of each step includes the type of SQL statement that is being validated and the table name.
For example:
JDBC validation - INSERT - USERS
JDBC validation - UPDATE - ACCOUNTS
The Documentation area for each step displays the complete SQL statement.
If you open the editor for a step, you can view the SELECT statement that is used to perform the
validation. The following example validates an update of the ACCOUNTS table:
SELECT* FROM ACCOUNTS WHERE (USER_ID = '{{Step1_param_14}}') AND (account_id =
'{{Step1_JDBC_rsp.filter_id_17}}')
Note: CAI might not have enough information to create database validation steps with an
adequate degree of certainty. The steps are generated, but the names begin with the word
Suggested. You can modify or remove these steps.
Test Templates
When creating a baseline from the DevTest Portal or the CAI command-line tool, you can specify a
test case whose steps will be included in the baseline. The test case is referred to as a test template.
This feature is also available when you create a functional test (see page 1203).
The following windows in the DevTest Portal let you select a test template:
Analyze Transactions
22-Jul-2016
1192/2016
To specify the template from the command-line tool, use the --cai-template option.
The template must include a Do-Nothing step that has the name CAI Template Place Holder. This
name is case insensitive.
In the generated baseline, the baseline steps are inserted after the Do-Nothing step.
The companions, global filters, global assertions, and other test-level information from the template
are included in the baseline.
Note: If the template is located in a different project from the baseline, any data sets in the
template are not copied to the Data folder of the baseline project. You must copy the data
sets from the template project to the baseline project manually.
1193/2016
The template contains an Inject HTTP Header (see page 1692) global filter that defines the
Authorization header. The header value is set to {{token_type}}{{space}}{{access_token}}. The Skip
To Step field is set to the Do-Nothing step, which means that the header is used in all subsequent
steps of the baseline. The {{space}} parameter is defined in the project.config file as a single space
character.
The REST step calls the login API. The REST step contains two JSON Path (see page 1698) filters:
The first JSON Path filter saves the value of the token type to the {{token_type}} property.
The second JSON Path filter saves the value of the access token to the {{access_token}} property.
The Output Log Message step indicates that the test is complete and displays the token.
The template also contains a JSON Ignored Nodes (see page 1630) companion that excludes the access
token from the baseline comparison.
The following graphic shows a stateful baseline for which the preceding template was specified.
Notice the steps that were added between the Do-Nothing step and the Output Log Message step.
22-Jul-2016
1194/2016
Run a Baseline
The procedure for running a stateful or consolidated baseline is different than the procedure for
running an expanded baseline.
To run a stateful or consolidated baseline, do one of the following actions:
Stage a quick test
Stage a test case
For information about how to stage a quick test or a test case, see Running Test Cases and Suites (see
page 583).
You can monitor the results in the Consolidated Baseline tab (see page 1195).
For information about how to run an expanded baseline, see Run a Test Suite (see page 607).
You can monitor the results in the Baseline Results panel (see page 1197).
22-Jul-2016
1195/2016
When you do either of the following tasks, the Consolidated Baseline tab appears in the Test
Monitor window:
Perform a quick test on a baseline test case
Stage and run a baseline test case
The following graphic shows the Consolidated Baseline tab for a baseline test case that contains
three scenarios. In the test run, the last scenario failed. The diff viewer shows where the issue
occurred in the last scenario.
The left portion of the tab contains the rows of the baseline test case's Large Data data set. Each row
includes a status icon:
The color gray indicates that the scenario has not yet been run.
The color green plus a white arrow indicates that the scenario is running.
The color green indicates that the scenario succeeded.
The color red indicates that the scenario failed.
The color orange indicates that the scenario stopped.
The color yellow indicates that the expected response was updated with the actual response.
After the baseline test case is run, you can select a row to display the results. If the scenario
succeeded or failed, the diff viewer shows the expected response and the actual response. Any
differences are highlighted. If the scenario stopped, the cycle history appears instead.
You can use the Settings tab to change the comparison options.
22-Jul-2016
1196/2016
Note: For information about the comparison options, see Graphical XML Side-by-Side
Comparison (see page 1558).
22-Jul-2016
1197/2016
22-Jul-2016
1198/2016
Save button
to save.
4. Specify the type of step that is included in the baseline:
Use Application Test Steps
22-Jul-2016
1199/2016
4.
The baseline includes a step that corresponds to the transaction frame that you added to
the shelf. For example, selecting a SOAP frame results in a baseline that includes a Web
Service Execution (XML) step. The step makes the client calls to the system under test at
runtime.
Use Transaction Frame Step
The baseline includes an Execute Transaction Frame step. The system under test is not
called at runtime. Instead, the agent plays back the transaction inside the JVM memory.
5. (Optional) To view and manage merged frames, perform the following steps:
Note: To create data sets, the Extract Data permission must be set for the Runtime User in
the Pathfinder Administration permission. See Standard Permissions (see page 1499) for
more information about the CAI Administration permission.
See Create a Test by Importing R/R Pairs from a File (see page 354) for more information about
22-Jul-2016
1200/2016
1201/2016
to save.
4. Click X to remove any transaction frames that you do not want a request/response pair
created.
5. To view a list of consolidated transaction frames for a request/response pair, click
The right pane displays a list of transactions by name and method.
6. To remove a consolidated transaction frame from a request/response pair list, click X for the
transaction frame in the right pane.
The frame is removed from the list and is not included in the generated request/response pair
zip file.
7. To download the request/response pairs from individual transactions frames, click
A zip file is created.
8. To create request/response pairs for all the transaction frames in the shelf, click Next.
9. Select the project where the data set is created.
10. (Optional) Edit the name prefix. The default prefix is the user name.
11. Select an option to keep or delete the transactions in the shelf once the data set is created.
12. Click Finish.
The Jobs in Progress dialog opens with the job status.
13. Point to the tooltip to display information about the request/response pair.
The request/response pairs are created and available in DevTest Workstation in the Data, RR
pair folder of the specified project. You can use the files in the zip file to create a new VS
image from the request/response pairs manually.
Document Transactions
Documenting business transactions generates visibility into the system architecture and the flow of
data. This visibility exposes what is happening in the backend code and database.
Document a test by recording test transactions and analyzing the generated backend calls. After the
tests are run, determine whether the expected results match the actual results. You can compare one
or more tests. Transactions are marked with a blue pin and display in a graphical view to identify the
exceptions that have occurred during the recording. The name of the recorded test case displays in
the Points of Interest list in the dashboard of the Home page.
22-Jul-2016
1202/2016
You document transactions for testing from the Document Transactions window. You can perform
the following tasks:
Record test transactions (see page 1204)
Search the CAI database for saved transaction recordings (see page 1205)
View and analyze recordings (see page 1205)
Create documentation from recorded transactions (see page 1209)
Delete recordings (see page 1205)
Compare recordings (see page 1206)
Show recordings in difference view (see page 1208)
Export recorded transactions (see page 1209)
Import recorded transactions (see page 1210)
Create a functional test for recorded transactions (see page 1211)
The CAI extension for the Google Chrome browser also supports documenting transactions (see page
1249).
More Information:
Document a Transaction for a Manual Test (see page 1203)
22-Jul-2016
1203/2016
22-Jul-2016
9.
1204/2016
11. (Optional) Click Show Outline and move the map to view portions of large transactions at a
time.
12. Click Stop.
13. To save the recording, click Save.
The recordings that are saved are listed in the Recording pane of the Document Transactions
window.
14. To create documentation for your recorded transactions, click Create Document.
22-Jul-2016
1205/2016
3. To delete all the recordings in the list, select the Recording check box and click Clear
Recordings
3. Select one or more transactions in the Recording Of: pane and click Remove Pin.
Compare Recordings
Compare two recordings side-by-side in the Document Transactions window. In the following
graphic, recording Jh-test1 displays in the left pane and recording Jh-test2 displays in the right pane.
The comparison of the two recordings displays in Show graphical differences view by default. Change
the view to display the recordings in Show text differences.
Use the legend
to view information about the recording comparison. For example, transactions
that are changed appear in yellow while unchanged transactions appear in white. The panes appear
in blue or pink depending on which pane has the transaction that occurred or did not occur.
The following graphic displays a comparison of two recordings in Show graphical differences view.
22-Jul-2016
1206/2016
The following graphic displays two recordings in Show text difference view:
In this view, expand the tree to display more information about the recordings.
This procedure requires at least two saved recordings.
Follow these steps:
1. From the Document Transactions window, click Compare Recordings
The Compare dialog displays.
2. Enter Recording name (left) and Recording name (right) fields and click OK . Alternatively,
you drag the recording name from the Saved Recordings list and drop the name into the
Recording name fields.
A recording displays in a left and right pane in graphical differences view by default.
22-Jul-2016
3.
1207/2016
3. (Optional) Click
6. Click X to close.
The following recording difference view options are available in graphical differences view
22-Jul-2016
3.
1208/2016
8. Click X to close.
Note: PDF generation is not supported when running DevTest Portal in HTTPS mode.
Create a report of the transactions that were recorded during a test from the Document Transactions
window. The report contains information about each frame that was recorded. The agent boundary
for transactions displays in the Transactions Detail Information section at the end of the report. You
can save and print the report.
Follow these steps:
1. From the Document Transactions window, record and run your test.
2. Click Create Document.
3. Enter the title of the report and click OK.
The report is generated and displays in a browser.
Note: The report can take a few minutes to generate depending on the number of
transactions.
4. To save the report, point to the bottom, right of the browser to display the taskbar, click Save,
and enter the fields.
5. To print, click Print and enter the fields.
22-Jul-2016
1209/2016
Note: When using the Safari browser to export a recording, the file is named unknown
without an extension by default. The Safari browser does not allow files name to be edited
when downloading. Ensure that you add the .zip extension to the file name to import the
recording.
You can also perform this task from the command line (see page 1223).
Follow these steps:
1.
22-Jul-2016
1210/2016
1211/2016
Note: This field is only enabled when at least one REST root frame is included in
the recording.
Http User
Specifies the web application user name. CAI encrypts the value and adds the result to the
Authorization header field in the functional test.
Http Password
Specifies the web application user password. CAI encrypts the value and adds the result to
the Authorization header field in the functional test.
5. To configure the functional test to use magic dates, select Apply magic dates to test cases.
22-Jul-2016
6.
1212/2016
6. To configure the functional test to validate the database, select Database Validation (see page
1189).
7. To create assertions, select Create Assertion and select from the options.
8. To upload a test case document, click Choose File and select a test template (see page 1192).
9. Click Finish.
The Jobs in Progress dialog opens.
10. Point to the tooltip to view the job status and error messages.
Native MQ CAI
Native MQ CAI is a WebSphere MQ API exit that monitors the get and put calls for the queues of a
queue manager. Native MQ CAI copies the get and put calls to a special queue named
ITKO_PATHFINDER. A separate DevTest component uses the data in the ITKO_PATHFINDER queue to
assemble transactions that can be viewed in the DevTest Portal. You can then use the transactions to
create virtual services, baselines, and so on.
This feature is supported on WebSphere MQ 6.0 and 7.1.
The following graphic shows an example of how Native MQ CAI works.
22-Jul-2016
1213/2016
The rules.xml file on the computer where DevTest is installed points to the computer where
WebSphere MQ is installed. The graphic shows the required properties.
The queue manager has three queues:
MyQueue1
MyQueue2
ITKO_PATHFINDER
The ITKO_PATHFINDER queue contains copies of the get and put calls for MyQueue1 and MyQueue2.
The data is converted into transactions and sent to the DevTest Portal.
22-Jul-2016
1214/2016
Native MQ CAI ignores certain types of queues that are not relevant. For example, any queue that has
a name beginning with SYSTEM. is ignored.
MQPUT and MQPUT1 calls are both supported.
More information:
Create the ITKO_PATHFINDER Queue (see page 1215)
Install the Native MQ CAI API Exit (see page 1216)
Configure the Native MQ CAI API Exit (see page 1217)
Configure the Agent Properties for Native MQ CAI (see page 1218)
Generate Transactions from the ITKO_PATHFINDER Queue (see page 1220)
Stop and Resume Message Mirroring (see page 1221)
Troubleshooting Native MQ CAI (see page 1222)
Provide the user with the +get permission on the ITKO_PATHFINDER queue.
The following example uses the setmqaut command to grant this permission:
setmqaut -m MyQueueManager -n "ITKO_PATHFINDER" -t queue -p user1 +get
22-Jul-2016
2.
1215/2016
2. Create a queue with the name ITKO_PATHFINDER. This queue must be owned by the same
queue manager as the queues that you want to monitor. The persistence setting, maximum
queue depth, and so on, are up to you.
22-Jul-2016
1216/2016
1217/2016
This example applies to an AIX system that has 64-bit kernel packages installed. If the system is a
pure 32-bit, change the Module attribute to /var/mqm/exits/iTKO_MQ_Pathfinder_aix.
You could copy iTKO_MQ_Pathfinder_aix and iTKO_MQ_Pathfinder_aix_r into both /var/mqm
/exits/ (32-bit libraries) and /var/mqm/exits64/ (64-bit libraries). Configure the Module attribute
with a relative path such as Module=iTKO_MQ_Pathfinder_aix. This action enables WebSphere MQ
to pick up the correct version of the libraries based on the default ClientExitPath attribute path that is
defined in the global WebSphere MQ configuration file (/var/mqm/mqs.ini). The /var/mqm/mqs.ini
file looks like the following example:
DefaultPrefix=/var/mqm
ClientExitPath:
ExitsDefaultPath=/var/mqm/exits
ExitsDefaultPath64=/var/mqm/exits64
22-Jul-2016
5.
1218/2016
Example
This example includes all of the required properties and some of the optional properties.
<?xml version="1.0" encoding="UTF-8"?>
<rules> <console> <property key="MQMIRROR_HOST" value="localhost"/>
<property key="MQMIRROR_PORT" value="1414"/>
<property key="MQMIRROR_CHANNEL" value="SYSTEM.DEF.SVRCONN"/>
<property key="MQMIRROR_QMNAME" value="QueueManager"/>
<property key="MQMIRROR_USER" value="mqm"/>
<property key="MQMIRROR_PASSWD" value="mqmpass"/>
<property key="MQMIRROR_INCLUDE_QUEUES" value="APP\.QUEUE.*"/>
<property key="MQMIRROR_EXCLUDE_QUEUES" value="CICS_GATEWAY.*|SYSTEM.*"/>
<property key="MQMIRROR_CONNECT_INTERVAL" value="5000"/> </console>
</rules>
The property names must be followed by a colon and the queue name. The values must be a regular
expression.
The regular expressions are checked against the entire MQ message body:
22-Jul-2016
1219/2016
1220/2016
The messages are retrieved from the ITKO_PATHFINDER queue and assembled into
transactions. You can view the transactions in the DevTest Portal.
Directory Configuration
In the next section, you create a file named stopMirror.txt and place it in a directory. By default, you
must use one of the following directories:
(UNIX, Linux, AIX) /tmp
(Windows) C:\temp
To change the location of the directory where the file must be placed on UNIX, Linux, and AIX, do the
following steps:
1. In a shell prompt, type the following command:
# export LISA_HOME=/some/directory
2. In the same shell, stop and restart the queue manager or queue managers.
3. In the same shell, stop and restart the application.
To change the location of the directory where the file must be placed on Windows, do the following
steps:
1. Create a global environment variable named LISA_HOME and set the value to your preferred
directory.
2. Stop and restart the queue manager or queue managers.
1221/2016
AIX Problems
If you configure the API exit files and then have a problem with an application on your system, do the
following tasks:
Verify that you copied (see page 1216) the correct exit files to the appropriate WebSphere MQ
directory.
Check the error logs in the /var/mqm/errors directory.
If you see errors such as the following where the exits library fails to load, try the workaround that is
listed afterward.
Problem 1:
-----------------------------------------------------------------------------06/03/15 19:14:10 - Process(336040.1) User(mqm) Program(java)
AMQ6175: The system could not dynamically load the shared library
'/var/mqm/exits64/iTKO_MQ_Pathfinder_aix_r'. The system returned error number
'8' and error message 'Could not load module
/var/mqm/exits64/iTKO_MQ_Pathfinder_aix_r.
The module has an invalid magic number.'. The queue manager will continue without
this module.
EXPLANATION:
This message applies to AIX systems. The shared library
'/var/mqm/exits64/iTKO_MQ_Pathfinder_aix_r' failed to load correctly due to a
problem with the library.
ACTION:
Check the file access permissions and that the file has not been corrupted.
----- amqxufnx.c : 1154 ------------------------------------------------------06/03/15 19:14:10 - Process(336040.1) User(mqm) Program(java)
AMQ7214: The module for API Exit 'Pathfinder' could not be loaded.
EXPLANATION:
The module '/var/mqm/exits64/iTKO_MQ_Pathfinder_aix_r' for API Exit
'Pathfinder' could not be loaded for reason xecU_S_LOAD_FAILED.
ACTION:
Correct the problem with the API Exit module 'Pathfinder'.
----- amqzuax0.c : 634 --------------------------------------------------------
Problem 2:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/mqm/java/lib64/libmqjbnd05.so: load
ENOENT on shared library(s) /usr/mqm/java/lib64/libmqjbnd05.so libc.a
Workaround:
22-Jul-2016
1222/2016
Then create a symbolic link of libc.a in the WebSphere MQ installation directory. The default
directory is /usr/mqm on AIX. Notice the space and a dot character after .a.
# cd /usr/mqm/lib
# ln -s /usr/lib/libc_r.a .
# ln -s /usr/lib/libc.a .
If the architecture is 64 bit, create another symbolic link. Notice the space and a dot character after .a
.
# cd /usr/mqm/lib64
# ln -s /usr/lib/libc_r.a .
# ln -s /usr/lib/libc.a .
Finally, verify that the symbolic link or links were created correctly.
# ls -l /usr/mqm/lib64/libc*.a
lrwxrwxrwx 1 root system 15 Jun 4 21:23 /usr/mqm/lib64/libc.a -> /usr/lib/libc.a
lrwxrwxrwx 1 root system 17 Jun 4 21:23 /usr/mqm/lib64/libc_r.a -> /usr/lib/libc_r.a
# ls -l /usr/mqm/lib/libc*.a
lrwxrwxrwx 1 root system 15 Jun 5 18:05 /usr/mqm/lib/libc.a -> /usr/lib/libc.a
lrwxrwxrwx 1 root system 17 Jun 5 18:06 /usr/mqm/lib/libc_r.a -> /usr/lib/libc_r.a
1223/2016
Search Criteria
For all the main options except --import, the set of transaction frames that are acted on is defined by
those matching the search criteria specified. Use any of the following options to specify the search
criteria: --from, --to, --localIP, --remoteIP, --category, --class, --method, --session, --transaction, agent, --min-time, --tag, and --max-frames. These options are used to narrow the set of root
transaction frames that are acted on.
Alternately, you can use the --frame option to limit the search results to a single transaction frame.
--from=start-time
Specifies the start time of the window of transaction frames you want. Use either of the following
formats: yyyy-mm-dd or yyyy-mm-ddThh:mm:ss. If this option and the --frame option are not
specified, the start of the current day is used.
--to=end-time
Specifies the end time of the window of transaction frames you want. Use either of the following
formats: yyyy-mm-dd or yyyy-mm-ddThh:mm:ss. If this option and the --frame option are not
specified, the end of the current day is used.
--localIP=IP address
Specifies the client-side IP address that CAI records.
--remoteIP=IP address
Specifies the server-side IP address that CAI records.
22-Jul-2016
1224/2016
--category=category
Specifies the type of transaction frame. You can search for more than one category at a time by
repeating this option.
Values: amx, client, dn_default, dn_remoting, dn_sql, ejb, gui, jca, jdbc, jms, logging, mq,
rest_http, rmi, rmi_http, rmi_ssl, thread, throwable, tibco, web_http, web_https, wm, wps,
ws_http, ws_https
--class=class-name
Specifies the class name. The value can be either the full class name or a string ending with '%' to
perform a "starts with" type of match.
--method=method-name
Specifies the method name. The value can be either the full method name or a string ending with
'%' to perform a "starts with" type of match.
--session=session-id
Specifies the session identifier.
--transaction=transaction-id
Specifies the transaction identifier.
--agent=agent-name
Specifies the name of the agent that is the source for the transaction frames you want.
--min-time=min-time
Specifies the minimum execution time (in milliseconds) of transaction frames you want to see.
Frames that are executed faster than this value are filtered out.
--tag=name, --tag=name=value
Specifies a frame tag (see page 1367) that is associated with a transaction frame. You can specify
the name only, or both the name and value. You can search for more than one tag at a time by
repeating this option.
--max-frames=max-frames
Specifies the maximum number of root transaction frames that are retrieved. If this option is not
specified, it defaults to 10000. There can be circumstances when more frames are processed than
the maximum.
--frame=frame-id
Specifies the identifier of the particular transaction frame desired.
--username=frame-name
Specifies the DevTest user name. This option is used only with the --import-docgen option.
--password=frame-name
Specifies the DevTest password. This option is used only with the --import-docgen option.
22-Jul-2016
1225/2016
-c, --count
Displays the number of root transaction frames that match the specified search criteria.
-r, --roots
Displays the root transaction frames that match the specified search criteria.
-p, --paths
Displays the transaction frame hierarchy for a set of root transaction frames.
Note: When DevTest is connected to a database other than the default Derby, you need to
specify the database to the broker element of the rules.xml file.
<database driver="yourdatabasedriver" url="yourdatabaseurl" user="yourdatabaseuser"
password="yourdatabasepassword"/>
This setting is used for the lifetime of the agent.
Baselines
The following options let you create baseline test cases and suites. The --to-dir option or the --toproject option is required. You cannot use both --baseline-template and --cai-template.
-b name, --baseline=name
Generates baseline tests for the selected transaction frames.
22-Jul-2016
1226/2016
--refer=frame-id
Specifies the identifier of the particular transaction frame that is designated as the key
transaction frame. If this option is not specified, the first transaction frame in the query result is
designated as the key transaction frame.
--stateful
Specifies that a stateful baseline is generated.
--consolidated
Specifies that a consolidated baseline is generated.
--force-tf-steps
Specifies that baseline tests are generated using the Execute Transaction Frame step only. If this
option is not specified, any available CA Application Test test steps are used whenever possible.
This option is not supported for web services with attachments.
--magic-dates
Specifies that baseline tests have magic date processing applied.
--baseline-template=baseline-template
Specifies the path to a test case to use when generating baseline tests. This option supports
consolidated and expanded baselines only.
--cai-template=cai-template
Specifies the path to a CAI test template (see page 1192) to use when generating baseline tests.
--http-user=http-user
Specifies the web application user name. CAI encrypts the value and adds the result to the
Authorization header field in the baseline. This option is applicable to stateful baselines for the
following protocols: REST, Web HTTP, and Web Service.
--http-passwd=http-passwd
Specifies the web application user password. CAI encrypts the value and adds the result to the
Authorization header field in the baseline. This option is applicable to stateful baselines for the
following protocols: REST, Web HTTP, and Web Service.
--param-level=param-level
Specifies the parameterization level for REST (see page 1164) and web service (see page 1175)
stateful baselines. The valid values are 1 (match on value only) and 2 (match on key and value).
--assertion=assertion-type
Specifies the stateful baseline assertion type.
Values: 1, 2, 3. If the value is set to 1 and the assertion returns false, the test fails. If the value is
set to 2 and the assertion returns false, the test generates a warning. If the value is set to 3 and
the assertion returns false, the test generates an error. The default value is 1.
--jndi-factory=factory-class-name
Specifies the JNDI factory class to use when generating EJB baseline tests.
--jndi-url=url
Specifies the JNDI URL to use when generating EJB baseline tests.
--jndi-user=user-id
22-Jul-2016
1227/2016
Virtualization Artifacts
The following options let you generate virtualization artifacts. The --to-dir option or the --to-project
option is required.
-v name, --virtualize=name
Generates virtualization artifacts for the selected transaction frames.
--refer=frame-id
Specifies the identifier of the particular transaction frame that is designated as the key
transaction frame. If this option is not specified, the first transaction frame in the query result is
designated as the key transaction frame.
--force-stateless
Specifies that VSE conversational processing is applied when generating a service image.
--unknown-request-action=no_match|no_hijack
Specifies the action that is taken for unknown requests. This option applies to generated
virtualization artifacts based around Java VSE. The valid values are no_match (return a "no
match") and no_hijack (bypass the virtual service).
--to-dir=output-pfi-file-name
Specifies the name of the directory where the generated PFI file is written.
--to-project=lisa-project-dir
Specifies the root directory of a project into which the generated artifacts are written, without
the requirement of an intermediate import file. You can specify this option instead of, or in
addition to, the --to-dir option.
--consolidate-by-name
Specifies that only frames with the same name as the selected frame are included.
--vrs=file-location
Specifies the name and location of the recording session file (see page 1151) that contains the
configuration information for the recording or import operation. If the --force-stateless option is
also specified, it is ignored because the recording session file has this information.
22-Jul-2016
1228/2016
Agent Condition
The following options let you check for a specified condition in an agent. The only supported
condition is whether the agent is currently dispatching. The term dispatching refers to the action of
capturing transactions.
--check
Checks for a specified condition in an agent.
--agent=agent-name
Specifies the name of the agent.
--condition=condition
Specifies the condition to check for.
Values: Dispatching
--check-timeout=number-of-seconds
Specifies the number of seconds to wait for the condition before timing out.
Capture Levels
The following options let you modify the capture level for each protocol that the Java agent can
capture.
Note: Setting different capture levels is not supported for queue-based client and server
communication, for example, WebSphere MQ and JMS.
--set-weights
Modifies the capture level for one or more protocols.
--agent=agent-name
Specifies the name of the agent.
--protocols="protocol[,protocol]"
Specifies the protocol names. If you include more than one value, separate the values by commas.
Values: ALL, HTTP Client, HTTP Server, Logging, Category, Exception, GUI, EJB, JMS, MQ, JCA, RCP,
RMI, SAP, Tibco, WPS, WebMethods, JDBC, JAVA
--weights="weight[,weight]"
Specifies the protocol weights. If you include more than one value, separate the values by
commas.
Values: 0, 4, 8. The value 0 corresponds to the Counts level. The value 4 corresponds to the
Counts and Paths level. The value 8 corresponds to the Full Data level.
Miscellaneous
The following options are also available.
22-Jul-2016
1229/2016
--broker=broker-url
Specifies the broker connection string. The default value is tcp://localhost:2009.
--search-frame
Searches for the transaction frame that matches the specified search criteria. You can use any of
the following arguments: --frame-name, --method, --parent-frame-name, --child-frame-name, -category, --localIP, --remoteIP, and --class.
--frame-name=frame-name
Specifies the name of a transaction frame to search for.
--parent-frame-name
Specifies the name of a parent transaction frame to search for.
--child-frame-name
Specifies the name of a child transaction frame to search for.
-h, --help
Displays help text.
--lds=large-dataset-file-name
Generates a large data set file for the selected transaction frames, without creating a
consolidated baseline. You must also specify the following options: --frame-name, --from, --to,
and --to-dir.
--version
Displays the version number.
FrameIDTimeCategoryLocalIP
RemoteIPNameExecTime
-----------------------------------------------------------------------------------------------------------c3a9c830-abae-11e3-b937-0024d6ab5ce22014-03-1412:28:
04660web_http10.132.92.14310.132.92.143Unknown984ms
984ms/lisabank/buttonclick.do(c3a9c830-abae-11e3-b937-0024d6ab5ce2)
50ms$Proxy93.getUser(c3c73b40-abae-11e3-b937-0024d6ab5ce2)
37msEJB3UserControlBean.getUser(c3c8c1e0-abae-11e3-b937-0024d6ab5ce2)
3msSQLActivity(1)(c3c8c1e0-abae-11e3-b937-0024d6ab5ce2-SQL)
22-Jul-2016
1230/2016
This example shows how to modify the capture level for multiple protocols. Notice the use of
quotation marks.
PFCmdLineTool--set-weights--agent=JBoss_LISABank--protocols="EJB,JMS"--weights="
8,4"
22-Jul-2016
1231/2016
22-Jul-2016
1232/2016
Note: The transaction frames that are created by this companion display in the
DevTest Portal with a virtualized label at the end of the name. An example of a
component name for an HTTP transaction is POST/itkoExamples
/EJB3AccountControlBean(virtualized). See Path Graph (see page 1075) for more
information about component names.
7. Go to the DevTest Portal and create the baseline test. See Creating Baselines (see page 1151)
for more information about creating baselines for HTTP, JMS, and WebSphere protocols.
8. Create a DevTest test from the baseline.
9. Verify the test in DevTest Workstation.
22-Jul-2016
1233/2016
The agent light receives the data from data transaction files or from third-party log files using a
Splunk transaction query.
The agent light sends the data to CAI to create the path through a REST API call.
22-Jul-2016
1234/2016
22-Jul-2016
1235/2016
From the command line, run the LisaAgentLight.jar file and use the -f and -t parameters to specify
the location and type of data file. The paths are created and displayed in the Analyze Transactions
window of DevTest Portal.
-f, -file
Defines the transaction data file to be imported into CAI.
-t, -type
Defines the data protocol type. HTTP, JMS, and MQ are supported.
Default: HTTP
1236/2016
When you query the Splunk server for webMethods HTTP transactions, a Splunk query statement
must be provided. The agent has an integrated default query statement. If you want a different
query, pass in the new query statement using the -search parameter.
The following example displays a default query statement:
"searchindex=main((CASE(GET)ORCASE(POST)ORCASE(PUT)ORCASE(DELETE))
/*)OR((AcceptORUser-AgentORAccept-EncodingOR\"
--Host\"ORAuthorizationORCookieORAccept-LanguageOR\"
--Connection\"ORlisaFrameRootORlisaFrameRemoteIPORlisaFrameIDORAuthorization
ORSet-CookieORSOAPActionORContent-TypeORContentLength):*)OR(\"SOAPRequest:\")OR(\"SOAPResponse:\")OR(HTTP/1.
*)|transactionstartsWith=(CASE(GET)ORCASE(POST)ORCASE(PUT)ORCASE
(DELETE))endsWith=(\"-->Content-Length:\")|where!searchmatch(\"--UserAgent:webMethods\")"
Note: When the Agent Light for webMethods HTTP is executed from a remote system, the
DevTest Server REST URL must be specified or the agent assumes the DevTest Server is
local. The URL format is http://<lisa-server>:1505.
1237/2016
HTTPresponseheader[linebreak]
[linebreak-ablankline]
{HTTPresponsebody-optional}[linebreak]
22-Jul-2016
1238/2016
JmsMessages Tag
JMS message begins with a <JmsMessage> tag and ends with a matching </JmsMessage> tag. JMS
messages can contain child JMS messages.
Headers Tags
The <Headers> tag specifies the message headers. The valid headers are JMSCorrelationID,
JMSDeliveryMode, JMSExpiration, JMSMessageID, JMSPriority, JMSRedelivered, JMSTimestamp, and
JMSType.
22-Jul-2016
1239/2016
Header tag
Destination Tags
The <Destination> tag specifies the message destination. The valid destination is a JNDI destination (a
JNDI-registered Queue or Topic). JMS message with the send method will specify the message
destination.
Destination tag
Producer Tags
The <Producer> tag is used to specify the message producer. The Producer can contain a Destination
(JNDI) and a Session. The session contains the session information (Transacted, AcknowledgeMode)
and a Connection Factory (JNDI). JMS message with the send method will specify the message
producer.
22-Jul-2016
1240/2016
Producer tag
Consumer Tags
The <Consumer> tag is used to specify the message consumer. The Consumer has the same
structures as the Producer. JMS message with the receive/onMessage method will specify the
message consumer.
Body Tags
The <Body> tag is used to specify the message payload (text). If the text payload itself contains the
XML tags, the text payload must be inside a CDATA section. The payload is ignored by the parser.
Body tag
22-Jul-2016
1241/2016
1242/2016
When you query Splunk for third-party transactions, a Splunk query statement must be provided to
query for the transactions. The agent has a default query statement built-in. If a different query is
needed, you can pass a new query statement using the -search parameter.
The following statement is the built-in default query statement:
"searchindex=mainCASE(\"-REQUEST:<?xml\")ORCASE(\"-RESPONSE:<?
xml\")|transactionstartsWith=CASE(REQUEST:)endsWith=CASE(RESPONSE:)";
If the Agent Light for WebSphere MQ is executed from a remote system, the DevTest Server REST
URL must be specified. Otherwise the agent assumes the DevTest Server is local. The URL format is
http://<lisa-server>:1505.
The agent light has the following optional parameters:
-url
Defines the CAI REST base URL.
Default: http://localhost:1505
-wsuser
(Optional) Defines the CAI REST username.
-wspassword
(Optional) Defines the CAI REST password.
22-Jul-2016
1243/2016
The data in the extended data file needs to be in the XML format defined by DevTest Solutions.
<Platforms>
<SWA>
<!--Thelogisfrommqclientornot,defaultvalueistrue-->
<IsClient>true</IsClient>
<QueueConnection>
<!--required-->
<RequestQueue>ORDERS.REQUEST</RequestQueue>
<ResponseQueue>ORDERS.RESPONSE</ResponseQueue>
<QueueManager>QueueManager</QueueManager>
<Host>HostName</Host>
<Port>1414</Port>
<Channel>SERVERCON</Channel>
<!--oftenappear-->
<Username>administrator</Username>
<Password>dcam09@CTC</Password>
</QueueConnection>
</SWA>
</Platforms>
22-Jul-2016
1244/2016
More Information:
Installing and Configuring the CAI Extension for Google Chrome (see page 1245)
Using the CAI Extension for Google Chrome (see page 1249)
22-Jul-2016
1245/2016
22-Jul-2016
d.
1246/2016
d. User Name
The user name that will be used to access DevTest Solutions. The default value is
admin.
e. Password
The password that will be used to access DevTest Solutions. The default value is
admin.
5. Click Update.
Note: The include settings and the exclude settings are mutually exclusive. You cannot
enable both the include settings and the exclude settings at the same time.
By default, the extension is configured to exclude certain types of request and response URLs. For
example:
Request URLs that end in .js
Request URLs that end in .png or .jpg
Responses that have content type of image/png or image/jpeg
Responses that have content type of application/javascript
If you configure URLs to include, the extension captures only those URLs.
Follow these steps:
1. Click the Chrome menu icon and select More tools, Developer tools.
2. Click CA CAI.
3. Click the URL filters icon.
4. To configure the include settings:
a. Select the Include URL option.
b. Enter the URL to include as a string or regular expression.
c. Click Add.
d. To include any paths that are selected in the left pane of the extension interface, click
Add selected paths.
5. To configure the exclude settings:
22-Jul-2016
1247/2016
1248/2016
The initial status of a transaction is a red circle with a diagonal line inside
that the transaction has been captured but not saved in DevTest Server.
When the transaction is saved, the status changes to a green circle with a white checkmark inside
.
For each transaction, you can view the following details:
Request that was sent to the endpoint
Response that was received from the endpoint
22-Jul-2016
1249/2016
Note: Before you can create functional tests or document transactions, you must add one
or more transaction frames to the shelf.
22-Jul-2016
1250/2016
The following procedure describes an option that is named Shelve relevant (current session). If you
make the same HTTP call more than once in the current session, the duplicate calls are treated as
relevant calls. Selecting the option adds the frames for these duplicate calls to the shelf.
Follow these steps:
1. To shelve one or more frames in the left pane, select the check box for each frame and click
the Shelve selected paths icon.
2. To shelve only the REST frames in the left pane, click the Shelve RESTful web service API paths
icon.
3. To shelve all frames in the left pane, click the Shelve all paths icon.
4. To shelve a frame in the path graph, right-click the node and select Shelve.
5. To shelve the relevant frames of a frame in the path graph, right-click the node and select
Shelve relevant (current session).
6. To remove all frames from the shelf, click the Clear shelf icon.
7. To unshelve a frame, right-click the frame and select Unshelve.
Create Tickets
You can use the extension to create tickets (see page 1107) from a web page. You can then view the
tickets in DevTest Portal.
Follow these steps:
1. Click the Create ticket icon.
2. Enter the title, external defect tracking number, severity, and description.
3. To include a screenshot of the application at the time of capture, ensure that the Capture
screenshot check box is selected.
4. Click Submit.
5. (Optional) If you included a screenshot, add a notation to the screenshot.
22-Jul-2016
1251/2016
Note: If the method is POST and the request content type is application/x-www-formurlencoded, the category of the transaction frame is changed from REST to Web Http. This
change makes it easier to modify the POST parameters in the generated functional test.
Document Transactions
DevTest Portal includes a feature that lets you document business transactions (see page 1202).
22-Jul-2016
1252/2016
The extension also includes this feature. One difference is that a functional test is automatically
created, rather than being optional.
If you open the functional test in DevTest Workstation, the Documentation area contains a URL. You
can use this URL to open the documented transaction in DevTest Portal.
The generated report can contain a maximum of 50 screenshots. You can increase the maximum
number by adding the docgen.pdf.report.screenshots.max property to the phoenix.properties file.
However, increasing the number might cause the JVM to run out of memory and crash the portal
services.
Follow these steps:
1. Add one or more transaction frames to the shelf.
2. Click the Create document transaction and functional test from shelved frames icon.
3. Enter a name for the document.
4. Click Create.
5. Select the project in which to create the functional test.
6. Specify whether to keep or delete the transaction frames in the shelf once the functional test
is created.
7. Click Create.
The transaction is documented, and the functional test is created.
8. (Optional) Click Generate report.
The report displays in the browser. You can save or print the report.
1253/2016
Exception History
The Exception History report displays the exceptions that occurred over a specified time. The report
displays information in a line chart.
Ticket History
The Ticket History report displays a historic count of tickets that were generated.
22-Jul-2016
1254/2016
1255/2016
For each CICS Agent on which you want to enable CAI, do the following steps:
1. Click Show more
2. Click
to start capturing data.
The color of the icon changes to blue.
Remember to disable CAI when you are done.
Verify Enablement
If you want to confirm that the CICS Agents are enabled, log on to each CICS region and run TKOM.
The text PF ON indicates that the agent is enabled.
22-Jul-2016
1256/2016
Note: Activity on multiple CICS regions for the same CICS transaction are not stitched
together.
We will look at the activity on CICS1 first. In the list view, click the link in the Name column for the
second transaction. The transaction detail dialog opens.
22-Jul-2016
1257/2016
This path graph shows CICS transaction DEM3 invoking program DEMOAPP3, which performs a local
LINK to DEMOINQ. DEMOINQ then performs LINKs to DEMOINP, DEMOGETN, DEMOGETP,
DEMOGETB, and DEMOLOGI.
To see details of the LINKs, click an icon in the path to select it and then click the XML tab.
Note: The data in the XML tab can be difficult to decode. To see COMMAREAs and
CONTAINERs, a virtual service can be created and the information browsed in the service
image editor. For information about creating a virtual service, see the next section.
22-Jul-2016
1258/2016
This path graph shows the activity on CICS2 for CICS transaction DEM3.
Program DEMOINQ was actually instantiated on CICS1. It is shown here because it is the previous
node in the path.
DEMOINQ on CICS1 performs DPL LINKs to DEMOGETP, DEMOGETB, and DEMOLOGI. DEMOLOGI
then performs a local LINK to DEMOWRTQ.
Close the transaction detail dialog.
22-Jul-2016
1259/2016
The editor for the generated service image lets you see the COMMAREA or CONTAINERs.
22-Jul-2016
1260/2016
You can link only one installation of DevTest Solutions to one gateway.
22-Jul-2016
1261/2016
You can update the policy after it has been deployed. For example, you can disable capture by
changing the mode from Record to Do Nothing.
This procedure requires the following DevTest components to be running:
Enterprise Dashboard Server
Registry
Broker
Portal
This procedure assumes that the REST Management service has been published for the gateway.
Follow these steps:
1. Open DevTest Portal.
2. Click the down arrow to the right of your user name and select APIM Integration.
The APIM Integration dialog appears.
3. In the URL field, enter the URL to the gateway. For example, enter https://gateway.
mycompany.com:8443.
4. In the Gateway Name field, enter a unique name for the gateway.
5. In the User Name and Password fields, enter the credentials for logging in to the gateway.
6. In the User Name and Password fields that appear under DevTest Login, enter the credentials
for logging in to DevTest Solutions.
7. (Optional) By default, every API in the gateway is recorded. You can enter a regular expression
to filter the APIs.
8. (Optional) In the Mode field, select one of the following options:
22-Jul-2016
1262/2016
Before you invoke the APIs, ensure that the following DevTest components are running:
Enterprise Dashboard Server
Registry
Broker
Follow these steps:
1. Invoke one or more APIs.
2. Go to the Analyze Transactions window in DevTest Portal.
3. View the transactions that CAI generated for the captured data.
4. You can now shelve transactions (see page 1095) and create baselines and virtual services.
22-Jul-2016
1263/2016
If you are running the Application Trace Kit on Windows and the Start menu includes an entry for
DevTest Solutions, you can start the Application Trace Kit from the Start menu instead of from the
command line.
Live Paths
When you exercise the Java-based application, the Live Paths tab displays the transactions that one
or more DevTest Java Agents captured.
The following graphic shows a transaction in the Live Paths tab.
22-Jul-2016
1264/2016
22-Jul-2016
1265/2016
To view more information about a frame, click the frame in the Component column. One or more of
the following tabs appear:
Details
Displays basic information about the frame.
Request
Displays the request payload.
Request (Out)
Displays the value of the arguments at the end of method execution.
Response
Displays the response payload.
Screenshot
Displays the image that is associated with a GUI event.
Debug
Displays information that can be used for debugging.
If you enable profiling for an agent and then record some transactions, you can display the full call
tree for any frame. Right-click the frame and select Show call tree.
You can filter the call tree by absolute duration and relative duration.
Saved Paths
The Saved Paths tab displays the transactions that have been persisted to the database.
The following graphic shows the Saved Paths tab.
22-Jul-2016
1266/2016
To view the full details of a transaction, double-click the transaction in the Call column. The window
that appears is similar to the Live Paths tab.
To run the transaction again, do the following steps:
1. Click the green arrow in the full details window.
The Invocation window appears.
2. (Optional) Change the parameters in the State, Input, or Output tabs.
3. (Optional) Change the selected agent.
4. Click the green arrow.
22-Jul-2016
1267/2016
22-Jul-2016
1268/2016
The Metadata tab contains the following information for the selected class or interface:
Method signatures
Superclasses or implemented interfaces
Subclasses or implementing classes
The Source tab lets you decompile the selected class or interface for debugging purposes only. When
you click the Source tab, you must confirm that you have sufficient rights to view the decompiled
code.
The Live Instances tab (see page 1273) lets you view objects that are currently live in your server.
Follow these steps:
1. Select the agent in the Manage Agents pane.
2. Click Classes.
3. Select a class or interface in the left pane.
Manage Files
The Application Trace Kit includes a window that displays two sets of files:
Files on the local computer
22-Jul-2016
1269/2016
22-Jul-2016
1270/2016
22-Jul-2016
1271/2016
22-Jul-2016
1272/2016
You can change the if statement to exclude all frames whose class, method, and signature match
exactly. For example:
if (clazz.equals("com.itko.examples.ejb3.EJB3UserControlBean") && method.equals
("getUser") && signature.equals((Ljava/lang/String;)) {
return true;
}
You can change the if statement to exclude all frames from a class. For example:
if (clazz.equals("com.itko.examples.ejb3.EJB3UserControlBean")) {
return true;
}
You can change the if statement to exclude all frames from a package. For example:
if (clazz.startsWith("com.itko.examples.ejb3.")) {
return true;
}
Live Instances
The Live Instances tab in the Classes window lets you view objects that are currently live in your
server.
The text area at the top contains the OQL query that was used to perform the search.
The panel below the text area contains a list of objects. When you click an object, the Object Details
subtab provides more information.
The following graphic shows the Live Instances tab.
22-Jul-2016
1273/2016
This feature useful if you have a class with hundreds or thousands of instances and you want to
inspect a specific instance.
The following graphic shows the window where you run the queries.
1274/2016
1275/2016
Integration Flow
The integration flow includes the following steps.
1. The test case developer adds an application-specific integration filter to a test case. When the
test is run, the filter turns on integration support for the type of application indicated. For
example, the test case developer adds a Servlet Filter to test an integrated servlet.
2. When the server is invoked, test-enabled server components use the application-specific
integrator class and the TransInfo class to establish the communication with the running test
case. For example, if a servlet fails in some way, it can call TransInfo.setBuildStatus() to note
the failure to DevTest. For more information about the TransInfo class, see the JavaDocs in
the doc folder of your installation directory.
3. The filter automatically processes responses from the system-under-test. The filter logs
important information and processes any commands from the tested component.
22-Jul-2016
1276/2016
Integrating Components
This section explains how to integrate server-side components using the integration API.
This section contains the following pages:
Integrate Server-Side Components (see page 1277)
Collect Transaction Information (see page 1279)
Integrators (see page 1280)
Handle Integrated Output (see page 1281)
For more information about the TransInfo class, see the JavaDocs in the doc folder of your
installation directory.
2. Declare local variables to hold state.
The integrated component needs at least an integrator and a TransInfo variable, as seen in
the following code:
ServletIntegratorsi=null;
TransInfoti=null;
3. Start a transaction.
The integration API lets you control when the integrated component begins to communicate
with the DevTest software. All the communication must happen in context of a transaction.
Therefore, before beginning to communicate, start a transaction using the application-specific
integrator. You can ensure that DevTest is on before that by checking with the applicationspecific integrator class. The following code checks if DevTest is on, then retrieves the servlet
integrator from the integrator class and stores it in the variable si. The code then starts the
transaction using the servlet integrator and stores the result in the TransInfo object.
if(ServletIntegrator.isLisaOn(request)){
si=ServletIntegrator.getServletIntegrator(request);
ti=si.startTransaction("HelloWorld");
}
22-Jul-2016
1277/2016
4.
DevTest Solutions - 9.5
if(/*componentfailed*/){
//...
ti.setBuildStatus(TransInfo.STATUS_FAILED,failMsg);
}
For more information about valid build status codes, see Build Status under Collect
Transaction Information (see page 1279).
Set properties. The TransInfo class provides a method, setLISAProp(), that allows you to
set an arbitrary property. This method is a useful mechanism for getting information out
of an integrated component, especially when used with the Ensure Property Matches
Expression assertion.
For example, if your application calculates the Dow average, you could store that value in
a property that can be checked while testing. The following code creates a property
named DOW_AVERAGE and assigns the value CalculatedDowAverage.
ti.setLISAProp("DOW_AVERAGE",CalculatedDowAverage);
This mechanism can be used to send data cache data from the system under test to the
Test Manager as property values. These property values can be any serializable object,
including strings, any of the Java object wrappers for primitive types, or even your own
classes as long as the class path contains the proper classes to deserialize the data.
Make assertions. The TransInfo class provides several methods that make assertions, and
then take some action if the assertion fails. For example, the assertFailTest() method
takes a Boolean value and makes an assertion that the value is true. If the value is false,
the method instructs DevTest to fail the test and passes the string message that is logged.
ti.assertFailTest(boolean_assertion,"ASSERTFAILED");
For more information about TransInfo assertion methods, see Assertion Methods under
Collect Transaction Information (see page 1279).
Force the next node. On rare occasions, it is difficult to get information from the serverside component back to the test case. In this situation, it is helpful to be able to force the
test case to visit a specific test step if the condition arises. The TransInfo class provides a
method, setForcedNode(), that overrides the next test step as determined by the
Integrating Components test case. In the following code, the developer forces DevTest to
make specialStep the next test step if the special_condition is true.
if(special_condition)
ti.setForcedNode("specialStep");
22-Jul-2016
1278/2016
Test Components
Sometimes a server-side application has a number of checks and it is not clear where the test step
failed. You can separate out parts of the transaction using subcomponents and can report their
individual statuses. The com.itko.lisaint.CompInfo class represents a subcomponent.
For example, the following code creates a subcomponent of the transaction and sets its build status
to STATUS_SUCCESS:
CompInfoci=ti.newChildComp("SUBCOMP");
ci.setBuildStatus(CompInfo.STATUS_SUCCESS,"");
ci.finished();
Subcomponents are treated as part of the overall transaction. If one subcomponent fails, the entire
transaction fails. The following code creates a subcomponent and sets the build status to
STATUS_FAILED. In this case, the entire transaction fails.
CompInfoci=ti.newChildComp("SUBCOMP");
ci.setBuildStatus(CompInfo.STATUS_FAILED,"");
For more information about the CompInfo class, see the JavaDocs in the doc folder of your
installation directory.
For more information about the TransInfo class, see the JavaDocs in the doc folder of your
installation directory.
Build Status
The TransInfo class provides a method, setBuildStatus, that lets you specify information that the
system can use to determine how to run the test. The setBuildStatus method takes a string constant
whose possible values are defined on the TransInfo class. Status constants include:
S - STATUS_SUCCESS: The component executed as expected.
U - STATUS_UNKNOWN: The status is not known.
R - STATUS_REDIRECT: The component issued a redirect (only valid for some systems).
I - STATUS_INPUTERROR: The component failed due to bad inputs.
E - STATUS_EXTERNALERROR: The component failed due to external resource errors.
F - STATUS_FAILED: The component failed, presumably not because of inputs or external
22-Jul-2016
1279/2016
Assertion Methods
The TransInfo class provides several methods that make assertions, and then take some action if the
assertion fails. The Assertion methods include:
assertLog(boolean expr, String msg): If the assertion expr is false, the message is written to the
log.
assertEndTest(boolean expr, String msg): If the assertion expr is false, tell DevTest to end the test
normally, and write the message to the log.
assertFailTest(boolean expr, String msg): If the assertion expr is false, tell DevTest to fail the test,
and write the message to the log.
assertFailTrans(boolean expr, String msg): If the assertion expr is false, tell DevTest to consider
the transaction as failed, and write the message to the log.
assertGotoNode(boolean expr, String stepName): If the assertion expr is false, tell DevTest to
execute the stepName test step next. This can also be a property name in a double curly brace
{{x}} notation.
For more information about the TransInfo class, see the JavaDocs in the doc folder of your
installation directory.
Integrators
An integrator is an application-specific Java class that coordinates the communication with the
running test. For example, an EJB Integrator informs an EJB component whether DevTest integration
is turned on.
The com.itko.lisaint.Integrator abstract class provides the base set of functionality for the following
integrators:
Java Integrator
EJB Integrator
Servlet Integrator
Each integrator coordinates with the running test on whether DevTest and DevTest integration is
turned on. After this is determined, the primary responsibility of the integrator is to start a
transaction and provide access to the TransInfo object.
For more information about creating a TransInfo object, see Collect Transaction Information (see
page 1279).
22-Jul-2016
1280/2016
For more information about the Integrator class, see the JavaDocs in the doc folder of your
installation directory.
For more information about the ServletIntegrator class, see the JavaDocs in the doc folder of your
installation directory.
privateJavaIntegratorlisa;
publicStringgetLisaIntegrator(){
returnlisa.toXML();
}
publicvoidsetLisaIntegrator(JavaIntegratorobj){
lisa=obj;
}
For more information about the HasLisaIntegrator and LoginInfo classes, see the JavaDocs in the doc
22-Jul-2016
1281/2016
Integration Filters
An integration filter is an application-specific DevTest filter that coordinates the communication with
the integrated component. The inclusion of an integration filter indicates two things:
DevTest must turn on support for integration with that type of server-side component.
When an integrated server-side component returns results that match the attributes of the filter,
execute a specific test step as the next test step.
For example, the Servlet Filter turns on integration support for a servlet component and specifies a
test step to execute if the servlet returns specific values. A test case developer typically defines
multiple integration filters of a single type. Each filter checks a specific condition and sets the next
test step accordingly.
The model editor provides built-in support for three integration filter types:
Integration Filter for Java Applications
Integration Filter for Servlet Applications
Integration Filter for EJB Applications
Defining an integration filter in a test case indicates that DevTest wants to turn on integration for that
type and to listen for responses of that type. To define an integration filter, create the filter, select
the type, and set the attributes.
Trans Build Status: The server-side component has set the build status on the TransInfo to a
specific value. This field takes one or more build status code letters. For example, to define a filter
that fires if the build status is set to any terminating status, enter the value IEF.
Trans Build Message Expression: The server-side component has supplied a string as the message
parameter to the setBuildStatus method of the TransInfo that matches the specified regular
expression.
Component Name Match: The server-side component created a subcomponent with a name that
matches the value of this field. Possible values for the field include:
empty: Do not evaluate, meaning that there is never a match.
*: Match anything except a null.
anything else: Evaluated as a regular expression.
Component Build Status: The server-side component has set the build status on the CompInfo to
22-Jul-2016
1282/2016
Note: Only select the Report Component Content box if necessary, as it can be very
bandwidth intensive. Also, the check box is only a request. Servlet applications can ignore
the request and not provide the component content.
For more information about filters, see Using CA Application Test (see page 346).
Integration Assertions
An integration assertion is an application-specific DevTest assertion that executes a specific test case
as the next test case if an integrated server-side component returns results that match the attributes
of the assertion.
For example, the Check Integrator Response assertion specifies a node to execute if the server-side
component returns specific values. A test case developer typically defines multiple integration
assertions of a single type. Each assertion checks a specific condition and sets the next node
accordingly.
The model editor provides built-in support for three integration assertion types:
Check Integrator Response
Check Integrator Component Content Response
Check Integrator Reporting Missing Data
To define an integration assertion, create the assertion and set the attributes based on the type of
22-Jul-2016
1283/2016
22-Jul-2016
1284/2016
Note: The entire transaction is itself a component, so its name and content are evaluated
as part of this execution.
Note: The entire transaction is itself a component, so its name and content are evaluated
as part of this execution.
For more information about assertions, see Using CA Application Test (see page 346).
1285/2016
Extension Concepts
The following concepts are common to all customization scenarios:
lisaextensions File (see page 1286)
wizards.xml File (see page 1287)
The NamedType Interface (see page 1288)
Parameters and Parameter Lists (see page 1289)
The Test Exec Class (see page 1290)
Test Exceptions (see page 1291)
lisaextensions File
The lisaextensions file is where you define the extension points for DevTest.
One or more custom extensions (filters, assertions, test steps, and reports, for example) are declared
in a file whose extension is .lisaextensions. The name must be unique relative to any other
lisaextensions files in the same environment. For example, there could be two lisaextensions files
with the names library-A.lisaextensions and library-B.lisaextensions.
The lisaextensions file must be included in a JAR with the classes that do the custom extension
implementation. The JAR must be placed in the DevTest classpath. At the time of startup, DevTest
looks for all files with the extension .lisaextensions and tries to read the custom extension points
from them.
Note: Using the typemap.properties file to define extensions is supported only for
backward compatibility.
22-Jul-2016
1286/2016
All custom extensions in must provide a controller, viewer (frequently called an editor), and an
implementation. These are often three different classes. Often, DevTest provides defaults for the
controller and the viewer that you can use to avoid having to write your own. You can create custom
versions if these defaults are not suitable for your needs.
Implementation Objects
Here is an example of the portion of the contents of a lisaextensions file for custom assertions:
asserts=com.mycompany.lisa.AssertFileStartsWith
The class name on the right side of the equal sign represents the location of the classes that
implement the appropriate node logic. If more than one assertion is defined, all corresponding
classes are mentioned in the same line, separated by commas, as in:
asserts=com.mycompany.lisa.AssertFileStartsWith,com.mycompany.lisa.AnotherAssert
In this example, the default controller and editor are used. The defaults are adequate for most cases.
However, you can encounter situations in which custom controllers or, more frequently, custom
editors must be provided. A lisaextensions file is the place to declare the classes corresponding to
them.
wizards.xml File
The LISA_HOME home directory contains a file named wizards.xml. This file drives many of the
wizards that are rendered in DevTest. Any wizard that prompts the user with frequently accessed test
elements (assertions, test steps, filters, and so on) consults this file for the information to display in
the tree view. You can add your custom extensions to this file to make them easily available to users.
You can also remove built-in elements that are not used frequently. The wizards.xml file itself
provides some useful information about how to read and modify its contents, but the concepts are
here.
Wizard Tag
The wizard tag is used to provide a list of elements for a given type of test element and a given type
of use. For example:
22-Jul-2016
1287/2016
DevTest predefines the element values (in this case "assert") and the types (in this case "http"). New
element values or types are ignored. The type is the short name for the kind of elements that is
described in the contained Entry tags. In this example, the Entry tags are documenting assertions.
The type attribute drives when DevTest renders the given list. For common testing needs (like web
testing, XML testing, and Java testing), DevTest allows the wizards.xml file to contain different
assertions and filters that are appropriate.
Entry Tag
Here is a sample Entry tag:
<Entry>
<Name>MakeDiff-likeComparisonsontheHTMLResult</Name>
<Help>ThisistherightassertiontousewhenyouhaveaHTMLresultandyouwisht
operformdifflikeoperationsonit.Itletsyoudefinesimplywhatportionsofthetextmaychange,
whatmaynotchange,andwhatportionsmustmatchcurrentpropertyvalues.</Help>
<Type>com.itko.lisa.web.WebHTMLComparisonAssert</Type>
</Entry>
22-Jul-2016
1288/2016
A method in the class that defines the filter provides the text. That class must implement the com.
itko.lisa.test.NamedType interface, and must implement the getTypeName method:
publicStringgetTypeName()
{
return"FileFirstLineFilter";
}
Note: The com.itko.util.ParameterList class was deprecated in release 9.5. If you are using
a DevTest API that requires this class, you can continue to use it without causing functional
issues. However, you might receive warning messages when compiling your code. When
the ParameterList class is ready to be retired, we intend to communicate an official
upgrade process.
22-Jul-2016
1289/2016
The class that defines a DevTest element defines the parameters that the element exposes in a
callback method that returns a com.itko.lisa.test.ParameterList. For example, the getParameters()
method below defines the parameters for the Parse Property Value As Argument String filter:
publicParameterListgetParameters()
{
ParameterListp=newParameterList();
p.addParameter(newParameter
("ExistingProperty",PROPKEY_PARAM,propkey,TestExec.PROPERTY_PARAM_TYPE));
p.addParameter(newParameter("IsURL",ISURL_PARAM,newBoolean(isurl).
toString(),Boolean.class));
p.addParameter(newParameter("Attribute",ATTRIB_PARAM,attrib,TestExec.
ATTRIB_PARAM_TYPE));
p.addParameter(newParameter("NewProperty",PROP_PARAM,prop,TestExec.
PROPERTY_PARAM_TYPE));
returnp;
}
For each parameter exposed, the method creates a com.itko.util.Parameter. The previous example
defined the following parameters:
A property value for Existing Property
A Boolean value for IsURL
An attribute value for Attribute
A property for New Property
The parameters to the constructor of Parameter are:
The string that provides the label for the parameter in the model editor
A string key that is used to store the value of the parameter in a Java Map
A variable that stores the value of the parameter
The fully qualified type of the parameter
The model editor uses the last parameter to determine the user interface element that is associated
with the parameter. For example, passing Boolean.class renders the parameter as a check box.
Passing TestExec.PROPERTY_PARAM_TYPE renders the parameter as a drop-down list containing the
keys of all existing properties.
For more information about the com.itko.util.Parameter and com.itko.util.ParameterList classes,
see the JavaDocs in the doc folder of your installation directory.
1290/2016
Test Exceptions
DevTest Solutions provides two main exception classes for handling errors in test case components:
com.itko.lisa.test.TestRunException (in lisa-core-release#.jar)
Indicates a problem in how the test was run. For example, trying to access a parameter that does
not have an expected value would throw this type of exception.
com.itko.lisa.test.TestDefException (in lisa-core-release#.jar)
Indicates a problem in how the test was defined. For example, trying to reference a data set that
was not defined would throw this type of exception.
For more information about exception classes, see the JavaDocs in the doc folder of your installation
directory.
1291/2016
22-Jul-2016
3.
1292/2016
The previous example uses ftp.suse.com/pub/INDEX as the file to retrieve. This is a publicly
available FTP host that allows an anonymous login. Limit unnecessary hits on the SuSE FTP
site.
4. Implement the required executeNodeLogic method.
This method defines the logic that runs when the test step executes. Typically, this method is
used to instantiate and validate components of the system under test.
The TestExec parameter provides access to the test environment, such as logs and events. The
Map parameter provides access to the current value of the test step parameters. The Object
return type allows you to pass data back to the running test, so that you can run assertions
and filters on it.
publicObjectexecuteNodeLogic
(TestExects,Mapparams)throwsTestRunException
{
ts.log("Wegotcalledwith:"+params.toString());
Stringhost=(String)params.get("host");
Stringusername=(String)params.get("username");
Stringpassword=(String)params.get("password");
Stringpath=(String)params.get("path");
Stringfile=(String)params.get("file");
StringstoredFile=runFTP(ts,host,username,password,path,file);
FileDataObjectfdo=newFileDataObject(storedFile);
returnfdo;
}
Using a custom data object for the return value is common. This strategy has two benefits:
It encourages proper resource handling. Do not pass common resources, such as files and
JDBC connections, as results. Doing so prevents the node performing a cleanup by calling a
close method. If you construct your own data object, you can store and pass only the
information you need from the resource. Then close the resource before returning the
data object.
It allows you to perform conditional filtering and result-checking based on the type of the
data object. For more information about using data objects to perform conditional
filtering, see Create a New Filter (see page 1301).
The previous code uses the FileDataObject custom data object to store only the path to the
stored file, rather than passing an open File or FileInputStream. Any filter can perform
conditional processing by checking that the type of the result object is FileDataObject.
22-Jul-2016
1293/2016
2. Copy the JAR file that contains your custom Java test step and the lisaextensions file to the
LISA_HOME\hotDeploy directory.
If your custom Java test step depends on any third-party libraries, copy those libraries to the
LISA_HOME\hotDeploy directory.
For this example, the FTPCustJavaNode described previously has been packaged for you in
lisaint-examples.jar. This custom Java test step depends on the FTP client that is packaged in
ftp.jar. You can download an examples.zip file that contains these files from Using the SDK
(see page 1275).
Copy both of these files to the LISA_HOME\hotDeploy directory.
Note: The FTP client that is used in the sample code is provided by www.
amoebacode.com/ (http://www.amoebacode.com/).
This client puts the given class name in a convenient drop-down list for users when authoring
a test case. This is optional because DevTest can be given the class name at authoring time by
typing or using the Class Path Navigator.
If you are already running DevTest, exit and restart the program for this new setting to take
effect.
22-Jul-2016
1294/2016
22-Jul-2016
1295/2016
DevTest invokes this call for you to read the parameters you require for the operation from
the test case XML DOM. As the test case is constructed, it is passed with the DOM Element of
the step that represents this node in the test case XML.
publicvoidexecute(TestExects)throwsTestRunException
22-Jul-2016
1296/2016
This is called when your test step logic is invoked. The workflow and state engines manage
most of the control flow and data requirements for you. You can access the TestExec given as
a parameter to perform various tasks. See the JavaDocs TestExec and the description of this
class in Integrating Components (see page 1277).
2. Create a Java class that extends com.itko.lisa.editor.TestNodeInfo.
To create and edit your node, provide a controller and viewer in the MVC pattern. The
TestNodeInfo class is the base class for all test steps that are developed for DevTest. The
authoring framework executes this class to interact with your test step data and logic.
3. Create a Java class that extends com.itko.lisa.editor.CustomEditor.
This class provides DevTest with the actual user interface for viewing and editing your node
data. The authoring framework constructs and calls this class to display your parameters,
verify their validity, and save your changes back into the TestNodeInfo extension. This
CustomEditor extends JPanel in the Java Swing API. See the JavaDocs for CustomEditor and
view the sample code for help writing your own editors.
4. Perform the following method overrides if you want to control how the default name of the
step is generated.
Override the generateName method in the class that extends TestNode. In this method,
add the logic to create the default name.
publicStringgenerateName()
{
return"default name"
}
Override the generateName method in the class that extends TestNodeInfo. In this
method, add a call to the generateName method in the class that extends TestNode.
publicStringgenerateName()
{
return "defined name"
}
22-Jul-2016
1297/2016
Extending Assertions
This section explains how to extend the DevTest Solutions with a new assertion.
Create an Assertion
The assertions that the DevTest Solutions provides contain most of the logic that is required to test
enterprise software. However, you can create your own assertion to handle a specific situation.
DevTest provides built-in support for custom assertions. To create a custom assertion, you create a
Java class that extends com.itko.lisa.test.Assertion (in lisa-core-release#.jar). This class handles most
of the behind-the-scenes logic that is required to execute the assertion, and provides a nice user
interface in the model editor. If you have an existing Java class that extends com.itko.lisa.test.
CheckResult, it is still supported, but this class is deprecated and not recommended.
Follow these steps:
1. Create a Java class that extends com.itko.lisa.test.Assertion.
This class tells the DevTest that your class is a custom assertion and provides you with the
needed assertion functionality.
publicclassAssertionFileStartsWithextendsAssertion
{
}
The string that the getTypeName method returns is the default name of a new assertion.
3. Handle custom parameters to the assertion.
Some assertions require more information than is provided in the node execution result. In
this case, provide a parameter that allows the user to specify that information in the
Assertions tab of the model editor.
Implement the abstract getCustomParameters method. In this method, you create a
ParameterList and add a Parameter for each parameter to the assertion. The constructor for
the Parameter takes the following:
A string that provides the label for the parameter in the user interface.
A string that provides the key to store the value of the parameter in a Map.
A string representing the value of the parameter.
The type of the parameter.
22-Jul-2016
1298/2016
In this example, the custom assertion takes one parameter, the string to find in the file. The
rest of the code provides support for the parameter.
publicstaticfinalStringPARAM="param";
privateStringparam="";
...
publicStringgetParam()
{
returnparam;
}
publicParameterListgetCustomParameters()
{
ParameterListpl=newParameterList();
pl.addParameter(newParameter("StartsWithString",PARAM,param,String.
class));
returnpl;
}
4. Initialize the custom assertion object with the value of the DOM Element.
When DevTest tries to execute an assertion, it first creates an instance of the custom class. It
then calls the initialize method, passing the XML element that defined the assertion. You
must store the values of the parameter child elements in the new instance.
For example, the test case XML can include an assertion that looks like the following example:
<CheckResultname="CheckThatFile"
log="CheckifthenodeFTP'dafilethatstartswith'AllVisitors'"
type="com.mycompany.lisa.AssertFileStartsWith">
<then>finalNode</then>
<param>AllVisitors</param>
</Assertion>
In the initialize method, you must get the text "All Visitors" into the param member variable.
The following code grabs the text from the child element named param and checks to ensure
that it is not null.
publicvoidinitialize(ElementrNode)throwsTestDefException
{
param=XMLUtils.getChildText(XMLUtils.findChildElement(rNode,PARAM));
if(param==null)
thrownewTestDefException(rNode.getAttribute("name"),
"FileStartsWithresultsmusthaveaStartsWithStringparameterspecifie
d.",null);
}
You are free to use whatever means that you prefer to read from the DOM Element. You can
use a convenience class that is named XMLUtils, as seen in the previous example.
5. Implement the checking logic with the evaluate method.
The TestExec parameter provides access to the test environment, such as logs and events. The
Object parameter provides access to results returned from executing the node. The Boolean
return type returns true if the assertion is true. Otherwise it returns false.
The following code verifies that the first line of the file that is passed from the node contains
the string that is stored in the param parameter. This code returns true only if the file starts
with that string.
publicbooleanevaluate(TestExects,Objectoresult)
{
if(oresult==null)
returnfalse;
FileDataObjectfdo=(FileDataObject)oresult;
Stringfirstline=fdo.getFileFirstLine();
returnfirstline.startsWith(param);
}
22-Jul-2016
1299/2016
As an author of an assertion, simply declare whether the assertion as defined is true or false.
Do not worry about the steps to execute after the state is returned. The workflow engine
evaluates whether that is considered a fired assertion.
6. (Optional) Implement the setValueDetail method to integrate into Portal Test Monitoring
facility.
You can provide a detailed message for the assertion about the actual value and the expected
value.
publicvoidsetValueDetail(Objectactual,Objectexpectation)
Deploy an Assertion
You must make a custom assertion available to the model editor before you can use it in a test case.
Follow these steps:
1. Tell DevTest to look for a new custom assertion in the .lisaextensions file, as:
asserts=com.mycompany.lisa.AssertFileStartsWith
com.mycompany.lisa.AssertFileStartsWith=com.itko.lisa.editor.
DefaultAssertController,com.itko.lisa.editor.DefaultAssertEditor
2. (Optional) You can also add this assertion to the wizards in the wizards.xml file.
<Entry>
<Type>com.itko.lisa.lek.training.assertion.
StringPropertyComparisonAssertion</Type>
</Entry>
</Wizard>
3. Copy the JAR file that contains your custom assertion and .lisaextensions file to the
LISA_HOME\hotDeploy directory.
If your custom assertion depends on any third-party libraries, copy those libraries to the
LISA_HOME\hotDeploy directory.
In this example, the AssertionFileStartsWith described previously has already been packaged
for you in lisaint-examples.jar. You can download an examples.zip file that contains this file
from Using the SDK (see page 1275). This custom assertion does not depend on any third-party
libraries.
4. If you are already running DevTest, exit and restart the program for this new setting to take
effect.
1300/2016
Extending Filters
This section explains how to extend DevTest Solutions with a new filter.
Create a Filter
The filters that the DevTest Solutions provides includes most of the logic that is required to test
enterprise software. However, you can create your own filter to handle a specific situation. DevTest
provides built-in support for custom filters.
Follow these steps:
1. Create a Java class that extends com.itko.lisa.test.FilterBaseImpl.
This class tells DevTest that your class is a custom filter.
publicclassFilterFileFirstLineextendsFilterBaseImpl
{
}
4. Initialize the custom filter object with the value of the DOM Element.
When DevTest tries to execute a filter, it first creates an instance of the custom class. DevTest
then calls the initialize method, passing the XML element that defined the filter. You must
store the values of the parameter child elements in the new instance.
For example, the test case can include a filter that looks like the following example:
<Filtertype="com.mycompany.lisa.ext.filter.FilterFileFirstLine"
isftp="true"prop="THE_LINE"/>
22-Jul-2016
1301/2016
4.
In the initialize method, set the isftp variable to true and set the prop variable to THE_LINE.
staticprivateStringISFTP_PARAM="isftp";
staticprivateStringPROP_PARAM="prop";
privateStringprop;
privatebooleanisftp;
//...
publicvoidinitialize(Elemente)throwsTestDefException
{
try{
Strings=XMLUtils.findChildGetItsText(e,ISFTP_PARAM).toLowerCase();
if(s.charAt(0)=='y'||s.charAt(0)=='t')
isftp=true;
else
isftp=false;
}
catch(Exceptionex){
isftp=false;
}
prop=XMLUtils.findChildGetItsText(e,PROP_PARAM);
if(prop==null||prop.length()==0)
prop="FILE_FIRST_LINE";
}
This code uses a utility class in lisa-util-release#.jar named com.itko.util.XMLUtils. This class
finds child tags of the given parent tag and reads the child text of the tag. This approach is
useful because DevTest automatically writes the XML representation of filters by making each
of the Parameter objects in getParameters a child tag of the Filter tag. Each parameter key
becomes the tag name and the child text of the tag is the value.
If a filter defines the prop key, then the default name of the filter is {{propValue}}. propValue
is the value of the prop parameter. If a filter does not define the prop key, then the default
name of the filter is the string that the getTypeName method returned. The FilterFileFirstLine
sample class defines this key as:
staticprivateStringPROP_PARAM="prop";
5. Because the filters execute before and after the test step, you get two chances to implement
the filter logic.
Implement the filter logic before node execution with the subPreFilter method. The TestExec
parameter provides access to the test environment, such as logs and events. If the filter sets a
new node to execute, the Boolean return type returns true. Otherwise, it returns false.
In this example, we are not interested in filtering before the node executes, so the
subPreFilter method does nothing.
publicbooleansubPreFilter(TestExects)throwsTestRunException
{
//don'thaveanythingtodo...
returnfalse;
}
Implement the filter logic after node execution with the subPostFilter method. The TestExec
parameter provides access to the test environment, such as logs and events. If the test should
continue as normal, the Boolean return type returns false. Otherwise, it returns true.
In this example, we store the first line of the file that is returned from the node in the new
property. ftp:// is prepended if the isFTP box is selected.
A DevTest user can use a filter at either the test step level or the test case level. Add logic to
the filter that verifies whether the result is the proper state to run the filter. For example, if
your filter assumes that the LASTRESPONSE holds a FileDataObject, then verify that before
executing the filter logic.
22-Jul-2016
1302/2016
publicbooleansubPostFilter(TestExects)throwsTestRunException
{
try{
Objectoresponse=ts.getStateObject("LASTRESPONSE");
if(!(oresponseinstanceofFileDataObject))
returnfalse;
FileDataObjectfdo=(FileDataObject)oresponse;
Stringfirstline=fdo.getFileFirstLine();
if((firstline==null)||(firstline.equals(""))){
ts.setStateValue(prop,"");
returnfalse;
}
if(isftp)
firstline="ftp://"+firstline;
ts.setStateValue(prop,firstline);
returnfalse;
}
catch(Exceptione)
{
thrownewTestRunException("ErrorexecutingFilterFileFirstLine",e);
}
}
Deploy a Filter
You must make a custom filter available in the model editor before you can use it in a test case.
Follow these steps:
1. Tell DevTest to look for a new custom filter in a lisaextensions file, as:
filters=com.mycompany.lisa.FilterFileFirstLine
com.mycompany.lisa.FilterFileFirstLine=com.itko.lisa.editor.FilterController,
com.itko.lisa.editor.DefaultFilterEditor
You can also add this filter to the wizards in the wizards.xml file.
2. Copy the JAR file that contains your custom filter and lisaextensions file to the
LISA_HOME\hotDeploy directory.
If your custom filter depends on any third-party libraries, copy those libraries to the
LISA_HOME\hotDeploy directory.
In this example, the FilterFileFirstLine described previously has already been packaged for you
in lisaint-examples.jar. You can download an examples.zip file that contains this file from
Using the SDK (see page 1275). This custom filter does not depend on any third-party libraries.
3. If you are already running DevTest, exit and restart the program for this new setting to take
effect.
22-Jul-2016
2.
1303/2016
Custom Reports
This section explains how to extend DevTest Solutions with new reports.
22-Jul-2016
1304/2016
You can also add the report through the lisa.properties file, using lisa.editor.reportGenerators
key.
2. Copy the JAR file that contains your custom report and the lisaextensions file to the
LISA_HOME\hotDeploy directory.
If your custom report depends on any third-party libraries, copy those libraries to the
LISA_HOME\hotDeploy directory.
3. If you are already running DevTest, exit and restart the program for this new setting to take
effect.
22-Jul-2016
2.
1305/2016
You can also add the report metric through the lisa.properties file, using stats.metrics.types
key.
2. Copy the JAR file that contains your metric and the lisaextensions file to the DevTest
hotDeploy directory at LISA_HOME\hotDeploy.
If your custom metric depends on any third-party libraries, copy those libraries to the
hotDeploy directory.
3. If you are already running DevTest, exit and restart the program for this new setting to take
effect.
Custom Companions
This section explains how to extend DevTest Solutions with a new companion.
22-Jul-2016
1306/2016
You can create custom companions in two different ways. Native companions are created in much
the same way that Native test steps are created. And somewhat like the Custom Java test step, there
is a simpler way in which DevTest shields you from most of the editor and serialization overhead.
That approach is documented here.
Note: If a companion contains duplicate parameter values, the duplicates are filtered out
when you save the test case. You must close the test case and then reopen it to see the
change in the user interface. This problem is specific to custom companions because of an
issue with the implementation of the lifecycle of custom companions.
If you have a test case containing a custom companion that wrote duplicate parameters
into the .tst file, there is a workaround. Reopen the .tst file, click save, close the .tst file,
and then reopen it. The duplicates are removed during the save, but the companion UI
does not update to reflect this change. The close and reopen step is required to see the
change.
Create a Companion
ge is unversioned. It is available and contains the same content in all versions of this space.
You can create a companion that extends the predefined SimpleCompanion.
Follow these steps:
1. Create a Java class that extends com.itko.lisa.test.SimpleCompanion.
This class provides the information that is required to create, edit, and execute your
companion logic.
public class AllowedExecDaysCompanion extends SimpleCompanion implements
Serializable
{
}
22-Jul-2016
1307/2016
6. (Optional) Implement the setLongMsg method to integrate into Portal Test Monitoring facility.
You can provide a detailed message for the companion.
public void setLongMsg( boolean isStarting, String msg )
Deploy a Companion
Companions must be explicitly declared to DevTest at startup so that the authoring framework can
make the companion available for use in test cases.
Like the Native Test test step, three classes are required for companions, but DevTest provides
default implementations for the two classes that are not documented here. The default controller is
com.itko.lisa.editor.CompanionController and the editor is named com.itko.lisa.editor.
SimpleCompanionEditor. Notice that the built-in companion named Set Final Step to Execute
Companion is defined with these classes. Use the registration for that companion as a sample. They
are connected in the lisaextensions file.
companions=com.mycompany.lisa.AllowedExecDaysCompanion
com.mycompany.lisa.AllowedExecDaysCompanion=com.itko.lisa.editor.CompanionController,
com.itko.lisa.editor.SimpleCompanionEditor
For more information about the lisaextensions file, see Extending DevTest Solutions (see page 1285).
As with all custom test elements, you must make the classes that you have developed and the
lisaextensions file available to DevTest. The most common way to do make them available is to put a
JAR file in the LISA_HOME\lib directory.
Note: A custom companion can implement the StepNameChangeListener interface and can receive
notification when the name of any step is changed. An SDK developer implements this if your custom
companion renders a drop-down list of the steps in the test. An example is the Final Step to Execute
companion, which lists the step names so a test author can select the teardown step. This code
change was added to enable notifying the Final Step to Execute companion when a step name
changes.
Using Hooks
This section explains how to extend DevTest Solutions with a new hook.
A hook is a mechanism that includes test setup logic or test teardown logic for all the tests running in
22-Jul-2016
1308/2016
Create a Hook
Follow these steps:
1. Create a Java class that extends com.itko.lisa.test.Hook.
This class provides the information that is required to execute the logic for your hook.
publicclassHeadlineHookextendsHook
{
}
4. (Optional) Implement the setLongMsg method to integrate into Portal Test Monitoring facility.
You can provide a detailed message for the hook.
publicvoidsetLongMsg(booleanisStarting,Stringmsg)
22-Jul-2016
1309/2016
Deploy a Hook
Hooks are deployed when a class name in the lisa.properties file registers them. The system property
key that is used for hooks is lisa.hooks. An example follows:
# to register hooks with LISA, these are comma-separated
lisa.hooks=com.itko.lisa.files.SampleHook,com.mycompany.lisa.HeadlineHook
The preceding lisa.properties entry deploys two hooks to be run on every test.
Your data set object is a Remote RMI object, and is therefore able to throw a
RemoteException from its constructor and some methods.
2. Implement the required getTypeName method.
This method provides the name that is used to identify the companion in the Test Case Editor.
publicStringgetTypeName()
{
return"NiftyDataSet";
}
The string that the getTypeName method returns is the default name of a new data set.
22-Jul-2016
1310/2016
2.
For more information about Parameters and ParameterLists, see Extending DevTest Solutions
(see page 1285).
4. Implement the two required initialize methods.
These methods are provided so that the data set can be initialized from either XML or the
ParameterList system within DevTest.
publicvoidinitialize(Elementdataset)
throwsTestDefException
publicvoidinitialize(ParameterListpl,TestExects)
throwsTestDefException
If you are out of rows in the data source, you must specifically code for the two possible
conditions that the user wants:
Restart reading the data source from the top again automatically, or
Return a null from this method to indicate that the data source is out of rows so that the
test workflow reflects the condition.
The following example shows possible psuedo-code for this function:
Readnextrow
Ifno-next-row,Then
Ifthereisno"atend"parameterspecified,Then
Re-openthedatasource
Readnextrow
Else
Returnnull
Returnrowvalues
Note: The API for the DataSet interface includes the public String getType() method. This
method returns the classname of the class implementing this interface.
22-Jul-2016
1311/2016
See the information about the lisaextensions file in Extending DevTest Solutions (see page 1285) for
more details on how to register your data set.
As with all custom test elements, make the classes that you have developed and the lisaextensions
file available to DevTest. The most common way to make them available is to bundle them in a jar file
that is placed in the hot deploy directory.
22-Jul-2016
1312/2016
Agents
This section describes how to install and configure each DevTest agent.
DevTest Java Agent (see page 1313)
DevTest CICS Agent (see page 1380)
DevTest LPAR Agent (see page 1418)
DevTest Mainframe Bridge (see page 1425)
22-Jul-2016
1313/2016
An agent is packaged in a JAR file. The JVM must be configured with the path to the JAR file. As of
Java 1.5, you use a string that starts with -javaagent to specify the path and any options. For
example:
-javaagent:C:\myagent.jar=option1=true,option2=false
22-Jul-2016
1314/2016
The database
The broker is a hub that dispatches Java Message Service (JMS) messages between agents, consoles,
and an embedded client.
The embedded client tracks network wide/agent-spanning properties, such as the set of agents, their
open queues, or current network connections. As such, the embedded client can assemble partial
transaction data into complete transactions for the benefit of consoles. The process of assembling
partial transactions into complete transactions is referred to as stitching.
After the data is assembled, the data is sent to the consoles (short term) and persisted to the
database for long-term storage.
This documentation ignores the distinction and refers to the embedded client as the broker.
The consoles get their finalized data from the broker (if recent) and the database (if older) for display
and user interaction. A console does not need to be a GUI component. Consoles include DevTest
Workstation, VSE, and simulators.
If the agents and the broker are on different computers, ensure that the system times are
synchronized.
22-Jul-2016
1315/2016
The following Java Message Service (JMS) destinations specify the flow of data:
The lisa.agent.info topic is carried over connections 1 and 2, produced by the agents and
consumed by the broker and the consoles. This topic lets the broker and the consoles see which
agents are currently online and what their basic properties are.
The lisa.agent.port topic is carried over connection 1, produced by the agents and consumed by
the broker. This topic lets the broker see the connections that are currently active between
multiple agents.
The lisa.agent.api topic is carried over connections 1 and 2, produced by the consoles and
consumed (and replied to) by the agents. This topic allows the consoles to invoke agent APIs over
JMS.
The lisa.broker.api topic is carried over connection 2, produced by the consoles and consumed
(and replied to) by the broker. This topic allows the consoles to invoke broker APIs over JMS.
The lisa.stats topic is carried over connections 1 and 2, produced by the agents and consumed by
the broker and the consoles. This topic gives the consoles an idea of what type of load the agents
are currently under. This topic also lets the broker persist those to the database.
The lisa.vse topic is carried over connections 1 and 2, produced by the agents and consumed by
the consoles. When VSE is enabled, the consoles receive VSE frames (and reply to them in
playback mode).
The lisa.tx.partial queue is carried over connection 1, produced by the agents and consumed by
the broker. When an agent captures a partial transaction (all the frames that happen in its JVM),
the agent sends it to the broker for assembly.
The lisa.tx.full topic is carried over connection 2, produced by the broker and consumed by the
consoles. When the broker finishes assembling the partial transactions that are received over lisa.
tx.partial, the broker sends the full transactions to the consoles.
The lisa.tx.incomplete topic is carried over connection 2, produced by the broker and consumed
22-Jul-2016
1316/2016
22-Jul-2016
1317/2016
An alternate approach for obtaining the DDL statements is to run the following command:
java -jar LisaAgent.jar -ddl <oracle|sqlserver|mysql|derby|db2> <output-file-name>
If you do not include the file name, the DDL statements are displayed on the command line only.
Typically, you create the schema manually for security or process reasons, or possibly migration or
documentation concerns.
1318/2016
Important! Install the pure Java agent unless you need to create TIBCO BusinessWorks
baselines. This feature requires the native agent.
More Information:
Install the Pure Java Agent (see page 1319)
Install the Native Agent (see page 1320)
Options for Agent Parameters String (see page 1321)
Java Agent Install Assistant (see page 1322)
Platform-Specific Agent Configuration (see page 1325)
Wily Introscope Agent (see page 1334)
Note: Investigate the target environment ahead of time and ensure that it has been tested,
or test it yourself. Most Java agent issues are operating system or JVM-dependent, instead
of application-dependent. Be sure to follow the instructions in this documentation. If that
does not help, review Troubleshooting the Java Agent (see page 1374) before contacting
Support.
You can download DevTest Java Agent files (see page 1044) from the DevTest Portal.
Follow these steps:
22-Jul-2016
1319/2016
b. For Oracle WebLogic Server, you will specify an agent parameters string in the
following format:
-javaagent:<path_to_LisaAgent2.jar>=name=<agent_name>[,url=<broker_url>]
Note: Investigate the target environment ahead of time and ensure that it has been tested,
or test it yourself. Most Java agent issues are operating system or JVM-dependent, instead
of application-dependent. Be sure to follow the instructions in this documentation. If that
does not help, review Troubleshooting the Java Agent (see page 1374) before contacting
Support.
If you want to create TIBCO BusinessWorks baselines, install the native agent. In addition, add the
heap option to the agent parameters string and set the value to true.
You can download DevTest Java Agent files (see page 1044) from the DevTest Portal.
The following table contains the file names of the platform-dependent library modules for the native
agent:
22-Jul-2016
Module
File Name
JavaBinder.dll
JavaBinder.amd64.dll
libJavaBinder.jnilib
1320/2016
libJavaBinder.x86.so
libJavaBinder.x64.so
libJavaBinder.solaris.x86.so
libJavaBinder.solaris.x64.so
libJavaBinder.solaris.sparc32.so
libJavaBinder.solaris.sparc64.so
libJavaBinder.hp-ux.sl
name
Defines the name of the agent. Use the following format:
name=agent-name
22-Jul-2016
1321/2016
Set the broker-host portion to the name or IP address of the computer where the broker is
deployed.
Set the broker-port portion to the TCP port on which the broker is listening. The default value is
2009.
token
Makes access to the agent secure. Use the following format:
token=admin-token:user-token
For more information, see Java Agent Security (see page 1371).
heap
The heap option is available only with the native agent.
Specifies whether to enable the heap-walking APIs, which are required for TIBCO BusinessWorks
baselines. The valid values are true and false. The default value is false.
jar
The jar option is available only with the native agent.
Defines the path to the LisaAgent.jar file.
Note: If you intend to create TIBCO BusinessWorks baselines, add the heap option to the
agent parameters string and set the value to true.
Automatic Configuration
The Java agent install assistant provides an option to automatically configure the Java agent on
platforms that are based on the user values in the JavaAgentInstaller.xml file. This file is a template
that contains the platform and the version information that is supported by DevTest. The
JavaAgentInstaller.xml file is located in the same directory as the LisaAgent.jar file.
This procedure describes the prerequisite steps that you must perform before starting the assistant.
Follow these steps:
1. Open the JavaAgentInstaller.xml file.
22-Jul-2016
1322/2016
5. Review all the predefined values and edit values that are based on your system.
1323/2016
java-jarLisaAgent.jar-ia-java-brokertcp://localhost:2009-name myagent
EnterthepathoftheJavaexecutable[C:\ProgramFiles\Java\jre7\bin\java]:
=====
Systemverificationcomplete.Youcanmanuallyaddtheseoptionstothejavacommand-
22-Jul-2016
1324/2016
-javaagent:C:\PROGRA~1\CA\DevTest\agent\InsightAgent.jar=url=tcp://localhost:2009,
name=myagent
DoyouneedassistancetoautomaticallyconfiguretheDevTestagent?Pleaseenter[Yes
/Y],ifno,enteranyotherletter,thenenter
y
Pleaseentertheindexin[]tochoosetheplatform:
[1]WildFly, JBoss Application Server, JBoss Fuse
[2]IBMWebSphereAppServer
[3]OracleWebLogicServer
[4]TIBCOBusinessWorks
[5]WebMethodsIntegrationServerWindowsService
[X]Exit
1
EnterpathforJavaagentconfigurationfile[C:\wildfly-8.2.0.Final\bin\standalone.
bat]:
AutomaticconfigurationoftheJavaAgentiscomplete.Pleasestartyourservice.
=====
Systemverificationcomplete.AddtheseoptionstothejavacommandlinetostarttheDevTestagent:
-agentpath:/tmp/user/dist/agent/libJavaBinder.solaris.sparc32.so=jar=file:/tmp/user
/dist/agent/LisaAgent.jar,url=tcp://localhost:2009,name=MyAgent
DoyouneedassistancetoautomaticallyconfiguretheDevTestagent?Pleaseenter[Yes
/Y],ifno,enteranyotherletter,thenenter
n
PleasemanuallyaddtheseoptionstotheJavacommand-linetostarttheDevTestagent
1325/2016
Note: JBoss Enterprise Application Platform 6.2 is built from JBoss Application Server 7.
You can use the agent install assistant (see page 1322) to determine the value of the agent parameters
string. For example:
-javaagent:C:\agent\InsightAgent.jar=name=JBossAgent,url=tcp://localhost:2009
JBoss AS 4.2
To configure JBoss AS 4.2 to use the DevTest Java Agent, edit the JBoss startup script.
Follow these steps:
1. Open the JBoss run.bat or run.sh file in a text editor.
2. Define the following property before calling the Java executable:
set JAVA_TOOL_OPTIONS=<agent_parameters_string>
1326/2016
set CLASSPATH=D:\pf\g_lisa\lisa-remote\JavaAgent\build-gradle\libs\InsightAgent.jar;%
CLASSPATH%
set BOOTDEL=-Dorg.osgi.framework.bootdelegation=com.itko.*,org.apache.karaf.jaas.boot,
sun.*,com.sun.*,javax.transaction,javax.transaction.*,org.apache.xalan.processor,org.
apache.xpath.jaxp,org.apache.xml.dtm.ref,org.apache.xerces.jaxp.datatype,org.apache.
xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.
validation,org.apache.xerces.dom
set JAVA_TOOL_OPTIONS=-javaagent:%PF_AGENTDIR%\InsightAgent.jar=name=Jboss_Fuse,
url=tcp://%PF_BROKER%:2009 %BOOTDEL%
call "%DIRNAME%\karaf.bat" %*
1327/2016
22-Jul-2016
1328/2016
Note: If you want to run TIBCO BusinessWorks on DevTest, the native agent must be
installed. See Install the Native Agent (see page 1320) for installation information.
To configure the agent for all applications, you edit the following file:
...\tibco\bw\5.x\bin\bwengine.tra
Editing this file does not affect applications that have already been created.
To configure the agent for an existing application, edit the following file:
22-Jul-2016
1329/2016
...\tibco\tra\domain\<domain-name>\application\<application-name>\<application-name><service-name>.tra
Where:
<domain-name> is the name of your TIBCO domain.
<application-name> is the name of the deployed TIBCO application.
<service-name> is the name of the deployed service.
For example:
D:\tibco\tra\domain\ca-tibcobw\application\MyBWProjectXml\MyBWProjectXml-caUserCRUD.
tra
You can use the agent install assistant (see page 1322) to determine the string. If you want to create
TIBCO BusinessWorks baselines, be sure to add the heap option and set the value to true.
1330/2016
Administration Console
To follow the officially supported way to add arguments to the JVM, specify the agent parameters
string from the WebLogic administration console.
Follow these steps:
1. Open the WebLogic administration console.
2. In the Domain Structure panel, expand the Environments node and click the Servers node.
3. Click the Configuration tab and the Server Start subtab.
4. In the Arguments field, add the agent parameters string.
5. Save your changes.
config.xml File
Another approach is to edit the central configuration file for the domain.
Follow these steps:
1. Go to the WEBLOGIC_HOME\user_projects\domains\base_domain\config directory.
2. Open the config.xml file.
3. Add the agent parameters string to the <server>/<server-start>/<arguments> node of the
target server.
Startup Script
You can also edit the WebLogic startup script.
In the following example, the JAVA_TOOL_OPTIONS environment variable is used to set the agent
parameters string. These lines are located in the startWebLogic.sh file after the Java version check
and before the actual WebLogic invocation.
JAVA_TOOL_OPTIONS=<agent_parameters_string>
exportJAVA_TOOL_OPTIONS
22-Jul-2016
1331/2016
If the startup script has been customized, the JAVA_TOOL_OPTIONS environment variable is not
used.
On UNIX platforms, use the export command instead of the set command:
export JAVA_TOOL_OPTIONS=-javaagent:/opt/CA/agent/InsightAgent.jar=url=tcp://172.
24.255.255:2009,name=wm
Windows Service
If webMethods Integration Server is defined as a Windows service, you can edit the server.bat file by
inserting the agent parameters string in the /jvmargs value that is defined in the if "1%1"=="1service" switch. For example:
"%IS_DIR%\bin\SaveSvcParams.exe"/svcname%2/jvm"%JAVA_DIR%\.."/binpath"%PATH%"
/classpath%CLASSPATH%/jvmargs"-javaagent:c:/DevTest/agent/InsightAgent.
jar=name=MyIS%JAVA2_MEMSET%"/progargs"%IS_DIR%\bin\ini.cnf"#"-service%2"#%
PREPENDCLASSES_SWITCH%#%PREPENDCLASSES%#%APPENDCLASSES_SWITCH%#%APPENDCLASSES%#%
ENV_CLASSPATH_SWITCH%#%ENV_CLASSPATH%#%3#%4#%5#%6#%7#%8#%9
22-Jul-2016
1332/2016
For each approach, you specify the agent parameters string as a generic JVM argument. You can use
the agent install assistant (see page 1322) to determine the required value. The following example is
based on the pure Java agent:
-javaagent:/home/itko/agent/InsightAgent.jar=name=was70_linux32,url=tcp://172.
24.255.255:2009
Note: In the agent parameters string, do not specify a file path that includes a space. For
example, do not include the file path C:\Program Files\CA\DevTest\agent\InsightAgent.jar
.
server.xml File
In this procedure, you use the server.xml file to specify the agent parameters string.
Follow these steps:
1. Go to the WAS_HOME/AppServer/profiles/AppSrv01/config/cells/<cell_name>/nodes
/<node_name>/servers/server1 directory.
2. Open the server.xml file.
3. At the bottom of the file, change the genericJvmArguments entry.
<jvmEntries ... genericJvmArguments="<agent_parameters_string>" .../>
Administrative Console
In this procedure, you use the web-based Administrative console to specify the agent parameters
string.
Follow these steps:
1. Go to the Administrative console.
2. Navigate to your application server.
3. Expand Java and Process Management and click Process definition on the Configuration tab.
4. Click Java Virtual Machine under Additional Properties.
5. Specify the agent parameters string in the Generic JVM arguments field. If you paste in the
string, be sure to check whether the string has been truncated.
wsadmin Tool
You can use the wsadmin tool.
In the following example, the agent parameters string is specified with the modify command of the
AdminConfig object. The Jacl scripting language is used.
C:\IBM\WebSphere70\AppServer\bin>hostname
22-Jul-2016
1333/2016
C:\IBM\WebSphere70\AppServer\bin>wsadmin
WASX7209I:Connectedtoprocess"server1"onnodecamaa74651f617Node01usingSOAPconnector;Thetypeofprocessis:UnManagedProcess
WASX7029I:Forhelp,enter:"$Helphelp"
wsadmin>setserver1[$AdminConfiggetid/Cell:cam-aa74651f617Node01Cell/Node:camaa74651f617Node01/Server:server1/]
server1(cells/cam-aa74651f617Node01Cell/nodes/cam-aa74651f617Node01/servers
/server1|server.xml#Server_1255494205517)
wsadmin>setjvm[$AdminConfiglistJavaVirtualMachine$server1]
(cells/cam-aa74651f617Node01Cell/nodes/cam-aa74651f617Node01/servers/server1|server.
xml#JavaVirtualMachine_1255494205517)
wsadmin>$AdminConfigmodify$jvmgenericJvmArguments"<agent_parameters_string>"
wsadmin>$AdminConfigsave
wsadmin>quit
1334/2016
rules.xml File
The configuration file for the DevTest Java Agent is named rules.xml.
The rules.xml file is located in the LISA_HOME directory on the computer where the broker is
running. The rules.xml file is generated when the broker is started for the first time. All agents that
are connected to the broker use the settings.
By default, the rules.xml file includes only a sample set of configuration properties. All the properties
and their default values are maintained internally.
You can view these properties in a file named rules.xml.sample. The rules.xml.sample file is
generated when the broker is started for the first time. The rules.xml.sample file is located in the
same directory as the rules.xml file.
Each property includes a comment, the name, and the value. For example:
<propertycomment="Keeptrackoffiledescriptors"key="lisa.agent.tracking.
disabled"value="false"/>
The following XML shows the general format of the rules.xml file. The agent element contains the
properties for an agent. The broker element contains the properties for the broker. The console
element contains the properties for the consoles.
<?xmlversion="1.0"encoding="UTF-8"?>
<rules>
<agentguid="0"name="A1">
...
</agent>
<broker>
...
</broker>
<console>
...
</console>
</rules>
You can also place a rules.xml file on the agent side or the console side. The settings in these files
override any information for that agent or console on the broker side.
The following graphic shows an example configuration. The broker accesses the rules.xml file that is
on the same computer. Multiple agents and consoles are connected to the broker. One of the agents
has its own rules.xml file.
22-Jul-2016
1335/2016
The following properties can be configured only on the agent side because the agent reads them
before making a connection to the broker:
lisa.agent.agent.log
lisa.agent.log.max.size
lisa.agent.log.max.archives
lisa.agent.security.manager.disabled
lisa.agent.transaction.auto.start
lisa.agent.transaction.auto.start.max.delay
lisa.broker.encryption.token
lisa.log.level
22-Jul-2016
1336/2016
Directives
You can add directives to the rules.xml file to perform certain functions. For information about the
directives, see the following pages:
category directive: Category Settings (see page 1342)
database directive: Configure a Database Sink (see page 1342)
exclude directive: Excluding from Interception and Virtualization (see page 1345)
feature directive: Protocol Weight Configuration (see page 1338)
intercept directive: Adding a Method to Intercept (see page 1344)
loadbalancer directive: Load Balancers and Native Web Servers (see page 1370)
response directive: Java Agent Auto-Response Generation (see page 1347)
track directive: Add a Class for Tracking (see page 1344)
virtualize directive: Instrumentation Rules for VSE (see page 1340)
The rules.xml.sample file contains examples of the directives.
22-Jul-2016
1337/2016
If an agent element within a group element has one or more properties, the properties override the
group settings.
Do not place the broker element or the console element inside the group element.
When you update an agent property from the DevTest Portal, the setting is saved to the stand-alone
agent section of the rules.xml file.
Note: For detailed information about the DevTest Portal, see Using CA Continuous
Application Insight (see page 1040).
22-Jul-2016
1338/2016
You can also modify the capture levels from the DevTest Portal.
The feature directive has the following format:
<featurename="protocol_name"weight="weight"/>
The feature directive can be placed within the group element or the agent element of the rules.xml
file.
Set the weight attribute to 0, 4, or 8. The value 0 corresponds to the Counts level. The value 4
corresponds to the Counts and Paths level. The value 8 corresponds to the Full Data level.
The following example sets the JDBC protocol to the Full Data level:
<featurename="JDBC"weight="8"/>
Signature Specification
The following directives in the rules.xml file include a signature specification:
exclude
intercept
respond
virtualize
You use the signature specification to describe the characteristics of a Java method signature.
The first portion of the specification is the word signature, followed by an equal sign and a quotation
mark.
The second portion of the specification contains the arguments, surrounded by parentheses. If the
method has no arguments, you must still include the parentheses.
The third portion of the specification contains the return type, followed by a quotation mark. If the
return type is void, use the letter V.
Do not include any spaces within the specification.
To specify a primitive type in the arguments or the return type, use one of the following letters:
22-Jul-2016
Letter
Primitive Type
boolean
byte
char
double
1339/2016
float
int
long
short
22-Jul-2016
1340/2016
Example:
<virtualizeclass="javax.ejb.SessionBean"/>
Telling the Agent how to Determine What Constitutes a Session for a Given Protocol
You perform this task by providing a code snippet that returns a session identifier.
<virtualize>
<trackclass="class_name"method="method_name"signature="signature"push="
true|false">
<code><![CDATA["andendswith"]]></code>
</track>
</virtualize>
The format of the signature is described in Signature Specification (see page 1339).
Examples:
<virtualize>
<trackclass="javax.servlet.http.HttpServlet"method="service"signature="(Ljavax
/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V"push="
false">
<code><![CDATA["return$1.getSession().getId();"]]></code>
</track>
</virtualize>
<virtualize>
<trackclass="javax.ejb.SessionBean"method="setSessionContext"signature="(Ljavax
/ejb/SessionContext)V"push="true">
<code><![CDATA["return$1.getEJBObject().getHandle().toString();"]]></code>
</track>
</virtualize>
<virtualize>
<trackclass="javax.ejb.EntityBean"method="setEntityContext"signature="(Ljavax
/ejb/EntityContext)V"push="true">
<code><![CDATA["return$1.getPrimaryKey().toString();"]]></code>
</track>
</virtualize>
These examples are hard-coded in the agent and thus unnecessary in your rules.xml file. However,
these lines show how the process works so it can be implemented for any number of protocols, other
than HTTP and EJB without recompiling the agent.
The value of the class attribute is the class from which we gain access to a session.
The value of the method and signature attributes determine the method that, when invoked,
computes the session identifier. This computation uses the value of the code attribute. $0 represents
the source object. $1, $2, and so on, are the method arguments.
The push attribute determines how we store that session for later use by VSE frames.
push="true" specifies that the container sets the session, and we keep a mapping of object to
session.
push="false" specifies that session is thread-scoped and we store in a thread-local variable.
The innermost session (identifier) is served back through VSE in the com.itko.lisa.remote.vse.
VSEFrame getSessionId() method. For more information, see the JavaDocs in the LISA_HOME\doc
directory.
22-Jul-2016
1341/2016
Example:
<databasedriver="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@localhost:
1521:ORCL"user="system"password="myPassword"/>
Category Settings
The DevTest Java Agent assigns a category to each transaction frame. If the agent cannot determine
the category, the default category is assigned.
You can configure the agent to associate an intercepted class or interface with one of the non-default
categories. Add the category directive to the rules.xml file of the agent. Specify the class or interface
name and the category number.
The category directive has the following format:
<categoryclass="class_or_interface_name"value="category_number"/>
1342/2016
22-Jul-2016
1343/2016
Example:
<trackclass="java.io.File"/>
JNDI Priority
You can specify the order of priority for JNDI name prefixes.
Add the transaction_jndi_name_prefix_priority property to the agent element of the rules.xml file.
The following line shows the default settings. Notice that the java:global prefix has the highest
priority.
<property key="transaction_jndi_name_prefix_priority" value="java:global=100;ejb:=70;
java:app=30;java:module=20;java:comp=10;#DEFAULT#=70"/>
The intercept directive can be placed within the group element or the agent element of the rules.xml
file.
The format of the signature is described in Signature Specification (see page 1339).
Class hierarchies are considered. Assume that class B extends class A, and both classes define method
M. If you intercept method M of class A, then method M of class B is also captured.
By default, CA Continuous Application Insight does not capture getter and setter methods. To add a
22-Jul-2016
1344/2016
The format of the signature is described in Signature Specification (see page 1339).
Class hierarchies are not considered. Assume that class B extends class A, and both classes define
method M. If you exclude class A, then method M of class A is not captured. However, method M of
class B is captured.
If you want to exclude a class or package irrespective of method or signature, you can do either:
Specify method="*" signature="*"
22-Jul-2016
1345/2016
The following example excludes the com.itko.examples.ejb package. Notice the use of a single
wildcard character.
<excludeclass="com.itko.examples.ejb.*"/>
The following example excludes the com.itko.examples package and all its subpackages. Notice the
use of two wildcard characters.
<excludeclass="com.itko.examples.**"/>
Excluding URLs
To exclude a URL, use the following format:
<exclude url="url"/>
If the agent encounters the following URLs, the agent does not capture them:
http://mycomputer:8080/datamanagement/design/applications/65/server_types/128
/components
22-Jul-2016
1346/2016
http://mycomputer:8080/datamanagement/design/applications/72/server_types/134
/components
http://mycomputer:8080/datamanagement/design/applications/88/server_types/141
/components
http://mycomputer:8080/datamanagement/design/applications/93/server_types/150
/components
However, the agent does capture this URL:
http://mycomputer:8080/datamanagement/design/applications/65/server_types/128
/architectures
The following example does not use wildcards.
<exclude url="http://mycomputer:8080/lisabank/buttonclick.do"/>
The respond directive must be placed within the agent element of the rules.xml file.
The class attribute is the only required attribute.
Use the following attributes to specify the method or methods that you want to the agent to
intercept:
class: Defines the name of the class or interface that defines the method or methods. If you
specify an interface, any class that implements the interface is also included.
method: Defines the name of a method. If you do not include this attribute, all methods of the
class or interface are included.
signature: Defines the signature of the method. The format is described in Signature Specification
(see page 1339).
source: If calling the toString() method on the object contains this string value, then intercept the
method.
args: If calling the toString() method on the arguments contains this string value, then intercept
the method.
When the agent intercepts a method call that matches the specification, the agent performs the
22-Jul-2016
1347/2016
If a value contains a greater than sign, replace the greater than sign with the following text:
>
Suppose that the server is not available. If you run this method, the code does not succeed because it
cannot obtain a connection.
You can use the following respond directives to force the code to succeed. The first directive
intercepts the creation of the InitialContext object. The second directive intercepts the lookup()
method of the Context object. The third directive intercepts any method of the
EJB3UserControlBeanRemote object.
<respondclass="javax.naming.InitialContext"method="<init>"args="1099"/>
<respondclass="javax.naming.Context"method="lookup"args="EJB3UserControlBean
/remote"/>
<respondclass="com.itko.examples.ejb3.EJB3UserControlBeanRemote"/>
22-Jul-2016
1348/2016
22-Jul-2016
1349/2016
The left area contains the base path, a list of API categories, and a list of objects.
If you select an API category, the center area displays the APIs for the category.
If you select an object, the center area displays information about the object.
Follow these steps:
1. Ensure that the registry is running.
2. Enter http://localhost:1505/lisa-pathfinder-invoke/restApiDoc/index in a supported
browser.
If the registry is on a remote computer, replace localhost with the name or IP address of the
computer.
3. Enter /lisa-pathfinder-invoke/restApiDoc/api in the text area.
4. Click Get documentation.
The APIs appear.
5. To invoke an API from the browser:
a. Select an API category.
b. Click the API name.
c. Specify any path parameters, query parameters, and body objects in the right area.
The API information in the center area indicates whether each parameter is required
or optional.
d. Click Submit.
22-Jul-2016
1350/2016
"id": 1088413135,
"cpuUsage": "0",
"nonHeapUsage": "79",
"heapUsage": "223",
"ioIn": "0",
"ioOut": "0",
"txn": "0"
Note: You can view detailed information about these classes in the JavaDocs for the agent.
The JavaDocs are located in the LISA_HOME\doc directory.
More Information:
Agent General APIs (see page 1352)
Agent Discovery APIs (see page 1353)
Agent Transaction APIs (see page 1356)
Agent VSE APIs (see page 1360)
Agent API Examples (see page 1362)
22-Jul-2016
1351/2016
Note: You can view detailed information about the interface and class that this page
describes in the JavaDocs for the agent. The JavaDocs are located in the LISA_HOME\doc
directory.
/**Auniqueidentifierforthisagentorconsole.Ifitisnamedtheguidispersiste
ntacrossVMlifespans*/
publiclonggetGuid();
publicvoidsetGuid(longguid);
/**Ahumanreadablenametoidentifythisagent,manuallygivenorgeneratedfromsystemproperti
es*/
publicStringgetName();
publicvoidsetName(Stringname);
/**Thenameofthemachinethisobjectwasgeneratedon(ifavailable)*/
publicStringgetMachine();
publicvoidsetMachine(Stringmachine);
/**TheIPofthemachinethisobjectwasgeneratedon(ifavailable)*/
publicStringgetIp();
publicvoidsetIp(Stringip);
/**TheworkingdirectoryoftheJVMthisobjectrunsin*/
publicStringgetWorkingDir();
publicvoidsetWorkingDir(StringworkingDir);
/**Theclasspathasitisreturnedbythejava.class.pathproperty*/
publicStringgetClasspath();
publicvoidsetClasspath(Stringclasspath);
/**Thelibrarypathasitisreturnedbythejava.library.pathproperty*/
publicStringgetLibpath();
publicvoidsetLibpath(Stringlibpath);
/**Foragents,returnsthejavaclasscontainingthemainmethodthatwasinvoked*/
publicStringgetMainClass();
publicvoidsetMainClass(StringmainClass);
/**Ashort-handversionofthecommandline(forrepresentationpurposesasitmaynotbeaccurate)*/
publicStringgetCommandLine();
/**Transientfieldtokeeptrackofwhenthisobjectissentorreceived*/
publicDategetGenerationTime();
publicvoidsetGenerationTime(Datetime);
/**TransientfieldtokeeptrackofarequiredpasswordtoinvokeAPIsonthisagent
overJMS*/
publicStringgetToken();
publicvoidsetToken(Stringtoken);
We can now look at some of the APIs directly off com.itko.lisa.remote.client.AgentClient. This list is
not exhaustive but covers most of the needs of most clients.
22-Jul-2016
1352/2016
/**Getstheclassresponsibleforalltransactionrelatedoperations*/
publicTransactionsClientgetTransactionClient();
/**GetstheclassresponsibleforallVSErelatedoperations*/
publicVSEClientgetVSEClient();
/**
*Getallthediscoveredagents-thisisthemainAPItogetIAgentInfosusedinal
lotherAPIcalls
*@paramtokensamapofagentguidsornamestotokens,nullifnoagenthastokenenabledsecurity
*@returnasetofIAgentInfoobjectsrepresentingagentsthatarecurrentlyonline
*/
publicSetgetRemoteAgentInfos(Maptokens);
/**
*Forwardagentonlineinformationtoregisteredlisteners
*@paraminfotheagentthatwasjustdetectedtocomeonline
*/
publicvoidonAgentOnline(IAgentInfoinfo);
/**
*Forwardagentofflineinformationtoregisteredlisteners
*@paraminfotheagentthatwasjustdetectedtogooffline
*/
publicvoidonAgentOffline(IAgentInfoinfo);
/**
*Evaluatearbitrarycodeonthespecifiedagent
*@paraminfotheagentthiscodewillbeevaluatedagainst
*@paraminputthecodetoexecute.Thevariable'_agent'representstheAgentinsta
nce.
*@returnthevaluereturnedbythecode
*@throwsJMSInvocationExceptionthrownifthecodethrowsontheagent
*/
publicObjecteval(IAgentInfoinfo,Stringinput)throwsJMSInvocationException
Note: You can view detailed information about this class in the JavaDocs for the agent. The
JavaDocs are located in the LISA_HOME\doc directory.
/**
*Thesystempropertiesofthespecifiedagent
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicMapgetVMProperties(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ReturnsalistofStatsFramesrecordedforthespecifiedagentbetweenthefroman
dthetodates.
*@paramagentInfotheagentforwhichtoretrievestatistics
*@paramfromhowfarbacktofilter
*@paramtohowrecentlytofilter
*@returnthedesiredStatsFrameslistorderedbydecreasingtime(starting
22-Jul-2016
1353/2016
/**
*ReturnsalistofStatsFramesrecordedforthespecifiedagentbetweenthefroman
dthetodates.
*@paramagentInfotheagentforwhichtoretrievestatistics
*@paramfromhowfarbacktofilter
*@paramtohowrecentlytofilter
*@paramintervalhowtoaggregatetheresultsinseconds.10meansaveragetheres
ultsofevery10secs,etc...
*@paramlimitthemaximumnumberofresults
*@returnthedesiredStatsFrameslistorderedbydecreasingtime(starting
atthetodate)
*/
publicListgetStatistics
(IAgentInfoagentInfo,Datefrom,Dateto,intinterval,intlimit);
/**
*TODO:(re)implement-currentlywillthrow
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicTopologygetTopology(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ExitpointsareMethodInfothatcaptureclasses
/methodsthatmakenetworkcallsdownthestack
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicSetgetExitPoints(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ReturnsthenameoftheJ2EEcontainer(orjavaifit'snotaJ2EEcontainer)
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicStringgetServerInfo(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ReturnsthewebapplicationsdeployedinthespecifiedJ2EEcontainer
*@paraminfo
*@return
*/
publicWebApplication[]getWebApps(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ReturnstheJNDIhierarchyonthespecifiedagentrepresentedbyaClassNodetree
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicClassNodegetJNDIRoot(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ThecurrentthreadsontheagentVM
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicThreadInfo[]getThreadInfos(IAgentInfoinfo)throwsJMSInvocationException;
/**
*ThecurrentthreadsstacksontheagentVM
*@paraminfo
*@return
22-Jul-2016
1354/2016
/**
*Thesetofallfilesintheclasspathofthespecifiedagent
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicSetgetClasspath(IAgentInfoinfo)throwsJMSInvocationException;
/**
*Returnstheclasshierarchyunderthespecifiedpath
*@paraminfo
*@paramfromPath
*@return
*/
publicClassNodegetClassNodes
(IAgentInfoinfo,StringfromPath)throwsJMSInvocationException;
/**
*Theclasshierarchyfoundinthearchiveatthegivenurl
*@paraminfo
*@paramurl
*@return
*@throwsJMSInvocationException
*/
publicClassNodegetArchiveNodes
(IAgentInfoinfo,URLurl)throwsJMSInvocationException;
/**
*Asetcontainingdataabouttheclass(fields/methods/src)
*@paraminfo
*@paramclassName
*@return
*@throwsJMSInvocationException
*/
publicSetgetClassInfo
(IAgentInfoinfo,StringclassName)throwsJMSInvocationException;
/**
*Decompileandreturnthesourcetoaclass
*@paraminfo
*@paramclazz
*@paramlocdecompileontheclientorintheagent
*@return
*@throwsJMSInvocationException
*/
publicStringgetClassSrc
(IAgentInfoinfo,Stringclazz,booleanloc)throwsJMSInvocationException,IOExceptio
n;
/**
*Returnsthehierarchythisclassbelongto,i.
e.,allancestorsbutalsoallextenders/implementers
*@paraminfo
*@paramclassName
*@return
*@throwsJMSInvocationException
*/
publicClassNode[]getClassHierarchy
(IAgentInfoinfo,StringclassName)throwsJMSInvocationException;
/**
*Returns(referencesto)allobjectsintheheapofthespecifiedclass-usewith
caution
*@paraminfo
*@paramclassName
*@return
*@throwsJMSInvocationException
*/
22-Jul-2016
1355/2016
/**
*Returns(referencesto)allobjectsontheheaptrackedbytheagent
*@paraminfo
*@return
*@throwsJMSInvocationException
*/
publicClassNodegetTrackedObjects(IAgentInfoinfo)throwsJMSInvocationException;
/**
*Acrudegraphrepresentationofanobject(recursivelycomputedfields)
*@paraminfo
*@paramclazz
*@paramhashCode
*@return
*@throwsJMSInvocationException
*/
publicClassNodegetObjectGraph
(IAgentInfoinfo,Stringclazz,inthashCode)throwsJMSInvocationException;
/**
*GetsthepathfromanobjecttoaGCroot
*@paraminfo
*@paramclazz
*@paramhashCode
*@return
*@throwsJMSInvocationException
*/
publicClassNodegetRootPath
(IAgentInfoinfo,Stringclazz,inthashCode)throwsJMSInvocationException;
/**
*Getsafileontheagentfilesystem,downloadsittotheclientinatemplocation
andreturnahandletoit
*@paraminfo
*@paramfile
*@return
*@throwsJMSInvocationException
*/
publicFilegetFile
(IAgentInfoinfo,Stringfile)throwsJMSInvocationException,IOException;
Note: You can view detailed information about these classes in the JavaDocs for the agent.
The JavaDocs are located in the LISA_HOME\doc directory.
22-Jul-2016
1356/2016
The main way to obtain and work with TransactionFrame objects is through a few overloads of the
following APIs supplied by com.itko.lisa.remote.client.TransactionsClient, which in turn can be
obtained with the following call: AgentClient.getInstance().getTransactionsClient().
/**
*Startrecordingtransactions
*@paraminfotheagenttostartrecordingon
*/
publicvoidstartXRecording(IAgentInfoinfo)throwsJMSInvocationException;
/**
*Stoprecordingtransactions
*@paraminfotheagenttostoprecordingon
*/
publicvoidstopXRecording(IAgentInfoinfo)throwsJMSInvocationException;
/**
*Starttrackingsocketusageontheclienttouseinreconcilingclientandserver
transactions.
*Thismustbecalledpriortothecallwe'readdinginaddClientTransaction.
*@paramglobalinstallonallsocketsoronlyonthisthread
*/
publicvoidinstallSocketTracker(booleanglobal);
/**
*Stoptrackingsocketusageontheclienttouseinreconcilingclientandservert
ransactions.
*Thisshouldbecalledafterthecallwe'readdinginaddClientTransaction.
*@paramglobaluninstallonallsocketsoronlyonthisthread
*/
publicvoiduninstallSocketTracker(booleanglobal);
/**
*Asaclient,youcaninvokethismethodtorootatransactiontreeatanewclient
transactioncreatedusing
*thespecifiedparameters.
*Note:youmustcallinstallSocketTrackerbeforeyouinitiatetheclientsidetrans
actionyou'readdinghere
*anditisrecommendedyoucalluninstallSocketTrackerafteryou'redonewiththen
etworkcall.
*@paramstampauniquestringyoucanlaterusetoidentifytheroottransactio
n
*(incallstogetTransactionsforex.)
*@paramstepInfoanicehumanreadablestringthattellswhatthetransactionisdoing(canbenull)
*@paramargstheparameterstheclientpassestothetransaction(canbeempty
)
*@paramresulttheresultofthetransaction(canbenull)
*@paramdurationtheclient'sviewofthetransactionduration
*/
publicvoidaddClientTransaction(Stringstamp,StringstepInfo,Object
[]args,Objectresult,longduration);
/**Deletealltransactionsanddependentdatathatoriginatedfromthisclient.*/
publicvoidclearTransactions();
/**
*GetsaflatlistofTransactionFramesreceivedfromallagentsthatsatsfythefil
terspassedasarguments
*@paramoffsetoffset
*@paramlimitmaxnumberofresults
*@paramcategoryfilterbytransactioncategory(seeTranactionFrame.
CATEGORY_XXX-0fornofilter)
*@paramclazzfilterbyclassname(nullor""fornofilter)
*@parammethodfilterbymethodname(nullor""fornofilter)
*@paramminTimefilterbyframedurationgreaterthanminTime
*@returnalistofTransactionFramessatisfyingthesuppliedcriteriaorde
redbydecreasingtime
*/
publicListgetTransactions
22-Jul-2016
1357/2016
/**
*Getalistoftransactiontreesrootedatthespecifiedtransaction
(s)andsatisfyingthespecifiedcriteria
*@paramoffsetoffset
*@paramlimitmaxnumberofresults
*@paramstampsanarrayofrootclienttransactionstamps-returnsallifthis
isempty
*@paramminTimedurationbelowwhichtransactionsareprunedoutoftheresults
*@returnretalistoftransactiontreesmatchingthecriteriaorderedbydecr
easingtime
*/
publicListgetTransactionsTree(intoffset,intlimit,String[]stamps,intminTime)
The parameters to these APIs do not specify an Agent or AgentInfo because transactions can span
multiple agents.
Those APIs return lists of com.itko.lisa.remote.transactions.TransactionFrame (or trees thereof), so
let us look at what data they encapsulate:
/**Auniqueidentifierforthisframe*/
publicStringgetFrameId();
publicvoidsetFrameId(StringframeId);
/**Theframeidofthisframe'sparentframe
publicStringgetParentId();
publicvoidsetParentId(StringparentId);
/**Anidentifiersharedbyallframesbelongingtothesametransaction(sameasglob
alrootframeid)*/
publicStringgetTransactionId();
publicvoidsetTransactionId(StringtransactionId);
/**TheparentTransactionFrameobject*/
publicTransactionFramegetParent();
publicvoidsetParent(TransactionFrameparent);
/**ThelistofchildTransactionFrameobjects*/
publicListgetChildren();
publicvoidsetChildren(Listchildren);
/**TheuniqueidentifieroftheAgentthisframewasrecordedin*/
publiclonggetAgentGuid();
publicvoidsetAgentGuid(longagentGuid);
/**Increasingcounterthathelpsordertheframes(timemaynotbepreciseenough)*/
publiclonggetOrdinal();
publicvoidsetOrdinal(longordinal);
/**NetworkincomingoroutgoingframessetthistotelluswhatIPtheyaretalkingf
rom*/
publicStringgetLocalIP();
publicvoidsetLocalIP(Stringip);
/**Networkincomingoroutgoingframessetthistotelluswhatporttheyaretalking
from*/
publicintgetLocalPort();
publicvoidsetLocalPort(intport);
/**NetworkincomingoroutgoingframessetthistotelluswhatIPtheyaretalkingt
o*/
publicStringgetRemoteIP();
publicvoidsetRemoteIP(Stringip);
22-Jul-2016
1358/2016
/**Networkincomingoroutgoingframessetthistotelluswhatporttheyaretalking
to*/
publicintgetRemotePort();
publicvoidsetRemotePort(intport);
/**Thenameofthethreadthisframewasrecordedin*/
publicStringgetThreadName();
publicvoidsetThreadName(StringthreadName);
/**Nameoftheclassorinterfacethisframewasrecordedin(aspertheinterception
spec)*/
publicStringgetClassName();
publicvoidsetClassName(StringclassName);
/**Nameoftheclassoftheactualobjectthisframewasrecordedin*/
publicStringgetActualClassName();
/**Nameofthemethodthisframewasrecordedin*/
publicStringgetMethod();
publicvoidsetMethod(Stringmethod);
/**Signatureofthemethodthisframewasrecordedin*/
publicStringgetSignature();
publicvoidsetSignature(Stringsignature);
/**Formattedrepresentationoftheobjectthisframewasrecordedin*/
publicStringgetSource();
publicvoidsetSource(Objectsource);
/**Formattedrepresentationoftheargumentstothemethodthisframewasrecordedin
*/
publicString[]getArguments();
publicvoidsetArguments(Object[]arguments);
/**Formattedrepresentationoftheresultofthemethodthisframewasrecordedin*/
publicStringgetResult();
publicvoidsetResult(Objectresult);
/**Numberoftimesthisframewasduplicatedwithinitsparent*/
publiclonggetHits();
publicvoidsetHits(longhits);
/**Servertimeatwhichtheframewasrecorded*/
publiclonggetTime();
publicvoidsetTime(longtime);
/**Wallclockdurationthisframetooktoexecute*/
publiclonggetClockDuration();
publicvoidsetClockDuration(longclockDuration);
/**CPUdurationthisframetooktoexecute*/
publiclonggetCpuDuration();
publicvoidsetCpuDuration(longcpuDuration);
/**Customrepresentationofstateassociatedwiththisframe*/
publicStringgetState();
publicvoidsetState(Objectstate);
/**FormattedLEKinfoasencoded/decodedbytheLEKEncoderclass*/
publicStringgetLekInfo();
publicvoidsetLekInfo(StringlekInfo);
/**Pre-computedcategorythisframebelongsto-seeTransactionFrame.
CATEGORY_XXX*/
publicintgetCategory();
publicvoidsetCategory(intcategory);
22-Jul-2016
1359/2016
/**Bitwiseor'edcombinationofvariousinternalpiecesofinformation-seeTransact
ionFrame.FLAG_XXX*/
publiclonggetFlags();
publicvoidsetFlags(longflags);
Note: You can view detailed information about this class in the JavaDocs for the agent. The
JavaDocs are located in the LISA_HOME\doc directory.
/**
*Returnsalistofallclass
/interfacenameswhosenamematchesthesuppliedregularexpression
*orthatextend/implementaclass
/interfacewhosenamematchesthesuppliedregularexpression
*ifimplementingistrue.Searchingforannotationsissupportedthroughthesyntax
:
*classregex@annotationregex(e.g.".*.Remote@.*.Stateless").
*@paramagentInfo
*@paramregex
*@paramimpl
*@return
*/
publicString[]getMatchingClasses
(IAgentInfoinfo,Stringregex,booleanimpl)throwsJMSInvocationException
/**
*RegisteraVSEcallbackwiththespecifiedagentwhoseonFrameRecordwillbeinvok
ed
*inrecordingmodeforallvirtualizedmethodsandwhoseonFramePlaybackmethodwil
lbeinvoked
*inplaybackmodeforallvirtualizedmethods.
*@paraminfo
*@paramcallback
*/
publicvoidregisterVSECallback(IAgentInfoinfo,IVSECallbackcallback);
/**
*UnegisteraVSEcallbackwiththespecifiedagent.
*@paraminfo
*@paramcallback
*/
publicvoidunregisterVSECallback(IAgentInfoinfo,IVSECallbackcallback);
22-Jul-2016
1360/2016
/**
*Startcallingourvirtualizationrecordingcallbackonthespecifiedagent.
*@paramagentInfo
*@throwsRemoteException
*/
publicvoidstartVSERecording(IAgentInfoagentInfo)throwsJMSInvocationException
/**
*Startcallingourvirtualizationplaybackcallbackonthespecifiedagent.
*@paramagentInfo
*@throwsRemoteException
*/
publicvoidstartVSEPlayback(IAgentInfoagentInfo)throwsJMSInvocationException
/**
*Stopvirtualizingonthespecifiedagent.
*@paramagentInfo
*@throwsRemoteException
*/
publicvoidstopVSE(IAgentInfoagentInfo)throwsJMSInvocationException
/**
*Virtualizesthespecifiedclass
/interfaceandallitsdescendantsonthespecifiedagent.
*@paramagentInfo
*@paramclassName
*@return
*/
publicvoidvirtualize
(IAgentInfoagentInfo,StringclassName)throwsJMSInvocationException
The interface for the callback APIs is defined by com.itko.lisa.remote.vse.IVSECallback and defines
the following methods:
/**
*ThisisthemethodthatgetsinvokedbyagentsthathaveVSErecordingturnedon
*whenavirtualizemethodgetscalled.TheVSEframehasalltheinformationneeded
*tolaterreplaythemethodinplaybackmode.
*@paramframe
*@throwsRemoteException
*/
voidonFrameRecord(VSEFrameframe)throwsRemoteException;
/**
*ThisisthemethodthatgetsinvokedbyagentsthathaveVSEplaybackturnedon
*whenavirtualizemethodgetscalled.TheVSEframehasalltheinformationneeded
*tomatchanexistingrecordedframesoitsresult(andbyreferencearguments)
*canbesetappropriately.
*@paramframe
*@return
*@throwsRemoteException
*/
VSEFrameonFramePlayback(VSEFrameframe)throwsRemoteException;
Finally, the com.itko.lisa.remote.vse.VSEFrame object is a POJO with getters and setters for the
following properties:
/**Get/setsauniqueidentifierforthisframe*/
publicStringgetFrameId();
publicvoidsetFrameId(StringframeId);
/**Theagentidthisframeoriginatesfrom*/
publiclonggetAgentGuid();
publicvoidsetAgentGuid(longagentId);
/**Thethreadnamethisframemethodwasinvokedon*/
publicStringgetThreadName();
publicvoidsetThreadName(StringthreadName);
22-Jul-2016
1361/2016
/**Thenameoftheclassthisframemethodwasinvokedon*/
publicStringgetClassName();
publicvoidsetClassName(StringclassName);
/**AuniqueidentifierthattracksobjectsforthespanoftheVM'slife*/
publicStringgetSourceId();
publicvoidsetSourceId(StringsrcId);
/**Thesessionidoftheinnermostsession-scopedprotocolenclosingthisframe*/
publicStringgetSessionId();
publicvoidsetSessionId(StringsessionId);
/**Thenameofthemethodthatwasinvoked*/
publicStringgetMethod();
publicvoidsetMethod(Stringmethod);
/**TheXStream'edargumentsarraytothemethodthatwasinvoked*/
publicString[]getArgumentsXML();
publicvoidsetArgumentsXML(String[]argumentsXML);
/**TheXStream'edresultofthemethodthatwasinvoked*/
publicStringgetResultXML();
publicvoidsetResultXML(StringresultXML);
/**The(server)timethemethodwasinvoked*/
publiclonggetTime();
publicvoidsetTime(longtime);
/**Thetimethemethodtooktoexecute*/
publiclonggetClockDuration();
publicvoidsetClockDuration(longduration);
/**WhethertousegetCodeortheResultXMLtocomputethedesiredresultinplayback
mode*/
publicbooleanisUseCode();
publicvoidsetUseCode(booleanuseCode);
/**
*ThecodetoexecuteontheserverifisUseCodeistrue.Thiscanbearbitrarycode
*thathasaccesstotheobject($0)andmethodarguments($1,$2,...)
*/
publicStringgetCode();
publicvoidsetCode(Stringcode);
tc.installSocketTracker(false);
longstart=System.currentTimeMillis();
Stringresponse=testMakeRequest(request);
longend=System.currentTimeMillis();
tc.uninstallSocketTracker(false);
StringframeId=tc.addClientTransaction("test",newObject
22-Jul-2016
1362/2016
System.out.println(frame.isComplete()?"Yes!":"No!");
}
The preceding code uses the following utility function, which has nothing to do with the agent but is
listed for completeness:
/**AssumingTomcatisrunningonlocalhost:8080*/
privatestaticStringtestMakeRequest(Stringurl)throwsIOException
{
StringBufferresponse=newStringBuffer();
HttpURLConnectioncon=(HttpURLConnection)newURL(url).openConnection();
con.setRequestMethod("GET");
con.setDoOutput(true);
con.setUseCaches(false);
BufferedReaderbr=newBufferedReader(newInputStreamReader(con.getInputStream()));
for(Stringline=br.readLine();line!=null;line=br.readLine())response.append
(line);
br.close();
returnresponse.toString();
}
try{AgentClient.getInstance().getVSEClient().startVSERecording
(info);}catch(JMSInvocationExceptione){}
});
22-Jul-2016
1363/2016
/**
*Returnswhethertheinterceptionshouldreturn(true)orproceed(false)
*/
publicbooleanblock
(booleanwayIn,Objectsrc,Stringspec,Stringclazz,Stringmethod,Stringsignature
,Object[]args,Objectret);
/**
*Calledaftermethodentrytopossiblymodifythecurrentframebasedoninterce
ptorlogic.
*/
publicbooleanpreProcess
(TransactionFrameframe,Objectsrc,Stringspec,Stringclazz,Stringmethod,String
signature,Object[]args,Objectret);
/**
*Calledbeforemethodexittopossiblymodifythecurrentframebasedoninterce
ptorlogic
*/
publicbooleanpostProcess
(TransactionFrameframe,Objectsrc,Stringspec,Stringclazz,Stringmethod,String
signature,Object[]args,Objectret);
}
If you want to stop data from being captured, overwrite the block() method. This technique is similar
to adding the exclude directive to the rules.xml file, but provides more flexibility.
If you want the agent to perform logic immediately before it captures a method, overwrite the
preProcess() method.
If you want the agent to perform logic immediately after it captures a method, overwrite the
postProcess() method.
These methods are automatically invoked for all classes and methods that have been intercepted or
tracked. To intercept a method or track a class, you can specify it using the documented syntax in the
rules.xml file. You can also programmatically specify the interception in the constructor of the
extension class. The advantage of the latter approach is that the extension is self-contained.
The first argument to the block() method is boolean wayIn. The block() method is called twice per
method: once on entry, once on exit. When the entry call is made, the value of the wayIn argument is
true. When the exit call is made, the value of the wayIn argument is false.
The following table describes the arguments that are common to the block(), preProcess(), and
postProcess() methods:
Argument
22-Jul-2016
Description
1364/2016
String spec
The class or interface name that was specified to instrument the API.
String clazz The name of the class that defines the intercepted method.
String
method
String
signature
Object[]
args
Object ret
The return value of the intercepted method. When the wayIn argument is true, the
return value is null.
The difference between the src, spec, and clazz arguments can be explained with an example.
Assume that you have the following interface and class definitions:
publicinterfaceA{
voidm();
}
publicclassBimplementsA{
voidm(){}
}
publicclassCextendsB{
}
If the rules specify intercept("A", "m", "*") and the code calls C.m(), then the following information
is true:
spec is A
clazz is B
src is an instance of C
Deployment
To deploy an extension, compile the extension and package it in a JAR file with a manifest file that
contains the following entry:
Agent-Extension:extension-class-name
When you drop this JAR into the Agent JAR directory, the agent automatically picks it up. If you add
the file after the agent has started, a hot load mechanism helps to ensure that the file is applied. If
you update the extension JAR while the agent is running, the JAR classes are reloaded dynamically.
Dynamic reloading makes it easy and fast to test your extension code without restarting the server.
The extension JARs get loaded by a classloader that can see all the classes that are used in the
extension class. You can compile your extension source against LisaAgent.jar and all container JARs
that define classes you want to use. You do not need to use reflection in your extension.
22-Jul-2016
1365/2016
Examples
The following example uses the block() method to prevent the agent from capturing any method
whose thread name starts with Event Sink Thread Pool.
publicclassMyInterceptorextendsAbstractInterceptor{
/**Returnstrueifthiscallshouldnotbeintercepted*/
publicbooleanblock
(booleanwayIn,Objectsrc,Stringspec,Stringclazz,Stringmethod,Stringsignature
,Object[]args,Objectret){
if(Thread.currentThread().getName().startsWith("EventSinkThreadPool")){
returntrue;
}
returnsuper.block(wayIn,src,spec,clazz,method,signature,args,ret);
}
...
The following example uses the postProcess() method to capture data for the Response row in the
Transactions window. This example calls the setResponse() method of the com.itko.lisa.remote.
transactions.TransactionFrame class. For more information, see the JavaDocs in the doc folder of
your installation directory.
publicclassMyInterceptorextendsAbstractInterceptor{
...
publicbooleanpostProcess
(TransactionFrameframe,Objectsrc,Stringspec,Stringclazz,Stringmethod,String
signature,Object[]args,Objectret){
if(clazz.equals("com.itko.lisa.training.NotCaptured")&&method.equals
("doRequest")){
frame.setResponse((String)ret);
}
returnsuper.postProcess(frame,src,spec,clazz,method,signature,args,ret);
}
The following example shows how to print the XML contents of a WebMethods com.wm.data.IData
object as it gets invoked in a flow of Integration Server. The agent already supports WebMethods, so
an extension is not necessary for it.
packagecom.itko.lisa.ext;
importjava.io.ByteArrayOutputStream;
importcom.itko.lisa.remote.transactions.interceptors.AbstractInterceptor;
importcom.itko.lisa.remote.transactions.TransactionFrame;
importcom.wm.app.b2b.server.ServiceManager;
importcom.wm.app.b2b.server.BaseService;
importcom.wm.data.IData;
importcom.wm.util.coder.IDataXMLCoder;
publicclassIDataInterceptorextendsAbstractInterceptor{
publicIDataInterceptor(){
super.intercept("com.wm.app.b2b.server.ServiceManager","invoke","(Lcom/wm/app
/b2b/server/BaseService;Lcom/wm/data/IData;Z)Lcom/wm/data/IData;");
}
publicbooleanpreProcess
(TransactionFrameframe,Objectsrc,Stringspec,Stringclazz,Stringmethod,String
signature,Object[]args,Objectret){
if(ServiceManager.class.getName().equals(clazz)&&"invoke".equals(method)){
doCustomLogic((BaseService)args\[0\],(IData)args\[1\],false);
}
22-Jul-2016
1366/2016
returnsuper.preProcess(frame,src,spec,clazz,method,signature,args,ret);
}
publicbooleanpostProcess
(TransactionFrameframe,Objectsrc,Stringspec,Stringclazz,Stringmethod,String
signature,Object[]args,Objectret){
if(ServiceManager.class.getName().equals(clazz)&&"invoke".equals(method)){
doCustomLogic((BaseService)args\[0\],(IData)ret,true);
}
returnsuper.postProcess(frame,src,spec,clazz,method,signature,args,ret);
}
privatevoiddoCustomLogic(BaseServiceflow,IDatap,booleanoutput){
ByteArrayOutputStreambaos=newByteArrayOutputStream(63);
try{
newIDataXMLCoder().encode(baos,p);
}catch(IOExceptione){
e.printStackTrace();
}
System.out.println("Flow:"+flow.getNSName());
System.out.println((output?"Output":"Input")+"Pipeline:"+baos);
}
}
To build this extension yourself, compile this code against LisaAgent.jar, wm-isclient.jar, and wmisserver.jar then JAR the class file with a manifest containing the following line:
Agent-Extension:com.itko.lisa.ext.IDataInterceptor
For example, you can create an extension that upon login to a web site grabs the value of the request
parameter username and calls frame.setTag("username", value).
The tags are stored in the FRAME_TAGS table in the database.
You can view the tags of a frame in the DevTest Portal. For more information, see Frame Information
(see page 1078).
You can use tags as search criteria in the CAI command-line tool (see page 1223).
22-Jul-2016
1367/2016
Deployment
To deploy a broker extension, compile the extension and package it in a JAR file with a manifest file
that contains the following entry:
Broker-Extension:extension-class-name
For example:
Broker-Extension: com.itko.lisa.remote.ext.JMSPayloadCorrelationBroker
When you drop this JAR into the broker directory, the broker picks it up automatically. If you add the
file after the broker has started, a hot load mechanism helps to ensure that the file is applied. If you
update the extension JAR while the broker is running, the JAR classes are reloaded dynamically.
Dynamic reloading makes it easy and fast to test your extension code without restarting the broker.
22-Jul-2016
1368/2016
publicclassLoadBalancerExtensionimplementsIAssemblyExtension{
privateTransactionFramem_lastAgent1Frame;
privateTransactionFramem_lastAgent2Frame;
publicbooleanonTransactionReceived(TransactionFrameframe){
if(frame.getClassName().equals("Class1")&&frame.getMethod().equals
("method1")){
m_lastAgent2Frame=frame;
if(m_lastAgent1Frame.getFrameId()==m_lastAgent2Frame.getParentId()){
stitch(m_lastAgent1Frame,m_lastAgent2Frame);
}
}
if(frame.getClassName().equals("Class2")&&frame.getMethod().equals
("method2")){
m_lastAgent1Frame=frame;
if(m_lastAgent1Frame.getFrameId()==m_lastAgent2Frame.getParentId()){
stitch(m_lastAgent1Frame,m_lastAgent2Frame);
}
}
returnfalse;
}
/*
* Link the parent frame and the child frame
*/
privatevoidstitch(TransactionFrameparent,TransactionFramechild){
StringnewFrameId=UUID.newUUID();
parent.setFrameId(newFrameId);
child.setParent(parent);
parent.getChildren().add(child);
}
}
...
22-Jul-2016
1369/2016
publicbooleanonPostRecord
(VSEFrameframe,Objectsrc,Stringclazz,Stringmethod,Stringsignature,Object
[]args,Objectret){
frame.setClassName(clazz.replaceAll("\\.","_"));
returnsuper.onPostRecord(frame,src,clazz,method,signature,args,ret);
}
To help the broker to perform the stitching correctly, add the loadbalancer directive to the rules.xml
file of the broker. For each appliance installed between agents, specify the IP address of the
appliance. For example:
<loadbalancerip="172.16.0.0"/>
<loadbalancerip="172.31.255.255"/>
22-Jul-2016
1370/2016
Extensions
Agent extensions for CA Continuous Application Insight and CA Service Virtualization run with the
following restrictions:
File access is limited to the agent directory and the temp directory.
Process creation is disabled.
Process exit is disabled.
As a result, the system under test is sandboxed from the rest of the computer.
Some applications can explicitly check for the security manager being null and take a different code
path depending on the result. In this situation, the agent security manager can cause insurmountable
issues. You can disable the agent security manager by using either of the following approaches:
Specify -Dsecurity.manager.disabled=true on the command line.
Add the lisa.agent.security.manager.disabled property to the rules.xml file and set the value to
true.
Note: Disabling the security manager disables authorization checks. However, you can still
enable token authentication.
22-Jul-2016
1371/2016
You use the token option to define one or two tokens for an agent. The first token represents an
admin role. The second token represents a user role. If you specify two tokens, use a colon to
separate them.
Examples:
token=asdf1 specifies an admin token with a value of asdf1.
token=asdf1:asdf2 specifies an admin token with a value of asdf1, and a user token with a value
of asdf2.
The admin or user token can include any character except for commas, equal signs, and space
characters. The maximum length of a token is 16 characters.
The token concept can be used with consoles. You can specify it with the command-line syntax -Dlisa.
token=xxxx or -Dlisa.token=xxxx:xxxx. For consoles, there is no custom security manager, so both
tokens have all permissions. Security is achieved by the fact that not supplying the console token
prevents you from doing anything.
Default Keystore
This approach uses the default keystore in DevTest.
Follow these steps:
1. Open the local.properties file in the LISA_HOME directory and uncomment the following line:
lisa.net.default.protocol=ssl
Custom Keystore
This approach is based on a custom keystore.
Note: For detailed information about the DevTest Portal, see Using CA Continuous
22-Jul-2016
1372/2016
1373/2016
Note: For information about the main DevTest log files and their location, see Logging (see
page 1523).
The following configuration properties let you control the logging behavior:
lisa.agent.log.max.size
Sets the maximum size of an agent or broker log file before it gets archived. The value is in bytes.
lisa.agent.log.max.archives
Sets the maximum number of archived log files to keep.
lisa.agent.java.logging.level
Sets the minimum level at which logging statements are captured. This setting is not applicable to
the broker. For more information about the levels, see the Java API documentation for the java.
util.logging.Level class.
lisa.agent.agent.log
Sets the location of the agent or broker log files.
You can also configure these properties (see page 1055) from the DevTest Portal.
Most serious issues involving the DevTest Java Agent occur at start-up (for example, the agent is not
found, or the process crashes or hangs). Generally, after you get past issues at start-up, you are in
good shape. From there, it is a matter of tweaking the configuration or writing extensions.
Notes:
Bouncing the servers to try various things in the agent environment can be difficult.
Typically, it is simpler, and a worthwhile exercise, to test running java <agent options> version on the target computer and the JVM. This exercise indicates whether the issue
is OS/JVM-specific or container/application-specific.
22-Jul-2016
1374/2016
For a command-line utility that can help you with the installation process, see Using the
Agent Install Assistant (see page 1322).
Error at startup: Error occurred during initialization of VM. Could not find agent library in absolute
path... (see page 1375)
Agent exits immediately (or shortly after starting the process). (see page 1376)
Agent exits with the message "GetEnv on jvmdi returned -3 (JNI_EVERSION)". (see page 1376)
Agent exits with the message "UTF ERROR" ["../../../src/solaris/instrument/EncodingSupport_md.
c":66]: ..." (see page 1376)
Agent hangs or throws numerous exceptions at startup (LinkageErrors, CircularityErrors, and so
on). (see page 1376)
Agent throws java.lang.VerifyErrors or hot swapping has no effect. (see page 1376)
Agent starts but the consoles or broker cannot see the agent. (see page 1377)
Agent causes some operations to time out. (see page 1377)
java.lang.NoClassDefFoundError on com/itko/lisa/remote/transactions/TransactionDispatcher.
class (see page 1377)
Security-related exceptions are thrown when the agent is enabled. (see page 1377)
Abnormal resource consumption (CPU, memory, file handles, ...). (see page 1377)
I can see the agent started, but CAI data is missing or incomplete. (see page 1378)
I turned on Java VSE recording or playback, but VSE does not receive any requests from the agent.
(see page 1379)
Other issues with Java VSE. (see page 1379)
Ticket functionality is not working. (see page 1379)
DevTest is configured to use an IBM DB2 database. In DevTest Portal, I selected a JDBC node in a
path graph. The Statements and Connection Url columns are blank. (see page 1379)
Received the following exception: com.itko.lisa.remote.transactions.
TransactionSizeExceededException: could not XStream ... Serialization for this frame will be
disabled. (see page 1380)
The VSE log includes the following error: com.itko.lisa.vse.stateful.protocol.java.listen.
DefaultJavaPlaybackCallback - Timed out waiting on response. (see page 1380)
Error at startup: Error occurred during initialization of VM. Could not find agent library
in absolute path...
Verify that the library is indeed in that path and is using the same architecture as Java (both 32 bit or
64 bit).
Also verify that the library is not missing any dependencies. For example, use depends.exe on Win32,
otool -L on OS X, or ldd -d on Linux and UNIX. If libraries are missing, ensure LD_LIBRARY_PATH is set
to include the directories where they reside. Containers can override LD_LIBRARY_PATH in their startup scripts. Do not assume that it is correctly set if you set it in a shell instead of from inside the script
or a container-specific administration tool.
If ldd does not return cleanly, the agent does not run properly. Therefore, verifying ldd is the first
thing to get right. If you cannot find an agent version for the operating system, consider using the
pure Java agent.
22-Jul-2016
1375/2016
1376/2016
Agent starts but the consoles or broker cannot see the agent.
Typically, the cause is a firewall or port issue between the agent and the broker.
The top of the agent log can include the following warning: Can't connect to broker at tcp://ip:port.
Verify that the IP address and port that the agent is using are correct. Then ensure that the broker is
listening on the specified port on the specified IP address. netstat -ano | grep port should show a
port listening on the supplied ip or 0.0.0.0. Finally, look for firewall issues by running telnet ip port
from the agent computer to ensure that it can see the broker. If it can see the broker, the broker is
likely in a bad state. Review the registry and broker logs (and restart it if necessary).
java.lang.NoClassDefFoundError on com/itko/lisa/remote/transactions
/TransactionDispatcher.class
Verify that LisaAgent.jar is available and has read permissions and that it is not corrupted. The
easiest way to verify is to run java -jar LisaAgent.jar -v.
Verify whether the application uses OSGi. If it does (as in JBoss 7), add com.itko to the system or
bootstrap packages. The method for adding com.itko is container-dependent, which makes it difficult
to provide specific instructions. However, it is typically a configuration file with a property that
specifies a list of packages or a similar JVM argument.
1377/2016
In that case, increase the value of the Maximum number of handles setting.
You can configure this property from the Agents window (see page 1046) of DevTest Portal. The
property appears in the Settings tab.
I can see the agent started, but CAI data is missing or incomplete.
The data lifecycle process includes the following stages:
Transaction capture in the agent
Transfer to the broker
Partial transaction assembly in the broker
Transfer to the consoles
Persistence to the database
Retrieval from the database
Missing or incomplete data can be the result of an issue in any of these stages.
Review the agent log for capture exceptions. Review the broker and console logs for transfer or
persistence exceptions.
If there are no exceptions, and you are still unable to locate the missing data, turn on debug or dev
logging in the agents. If you do not see statements such as "Sent partial transaction," then CAI is
probably not turned on.
If none of these steps provide conclusive results, contact Support.
22-Jul-2016
1378/2016
I turned on Java VSE recording or playback, but VSE does not receive any requests
from the agent.
First, verify that the agent is in VSE record or playback mode. Open the agent log and search for
"Starting VSE record/playback..."
Then look for exceptions in the agent logs and the VSE logs. If they are clean, it is possible that the
class you think is virtualized is not virtualized. Look in the agent log for a statement such as
"Virtualized com.xxx...." If the statement is missing, it is possible that the application has not yet
loaded the class. Another possibility is that if you are using an early version of Java 1.4, some flavors
do not support hot swapping. Java VSE uses hot swapping by default. In that case, specify the
virtualized classes in the rules.xml file of the agent and restart it.
22-Jul-2016
1379/2016
22-Jul-2016
1380/2016
1381/2016
22-Jul-2016
1382/2016
22-Jul-2016
1383/2016
22-Jul-2016
1384/2016
5.
The following table lists the resources that must be defined to CICS:
Nam Type
e
Description
You can start the CICS Agent and exits manually with the TKOR transaction.
22-Jul-2016
1385/2016
6.
DevTest Solutions - 9.5
You can start the CICS Agent and exits manually with the TKOR transaction.
A simple way to enable the CICS exits and start the agent running is to place entries in the
PLTSI (CICS startup). A PLTPI example follows. If the SIP has PLTPI=SI, then the following table
would be assembled as DFHPLTSI. The CICS TCP/IP interface is started before the DevTest
exits and agent.
DFHPLTTYPE=INITIAL,SUFFIX=SI
*
*ThefollowingprogramsareruninthesecondpassofPLTPI
*
DFHPLTTYPE=ENTRY,PROGRAM=DFHDELIM
*ThefollowingprogramsareruninthethirdpassofPLTPI
*
DFHPLTTYPE=ENTRY,PROGRAM=EZACIC20
DFHPLTTYPE=ENTRY,PROGRAM=ITKOINST
DFHPLTTYPE=FINAL
END
A way to disable the DevTest exits and stop the agent when it shuts down is to include an
entry in the PLTSD (CICS shutdown). A PLTSD example follows. If the SIP has PLTSD=SD, then
the following table is assembled as DFHPLTSD. The DevTest exits and agent are stopped
before the CICS TCP/IP interface.
DFHPLTTYPE=INITIAL,SUFFIX=SD
*
*ThefollowingprogramsareruninthefirstpassofPLTSD
*
DFHPLTTYPE=ENTRY,PROGRAM=ITKOREMV
DFHPLTTYPE=ENTRY,PROGRAM=EZACIC20
*
DFHPLTTYPE=ENTRY,PROGRAM=DFHDELIM
*ThefollowingprogramsareruninthesecondpassofPLTSD
*
DFHPLTTYPE=FINAL
END
22-Jul-2016
1386/2016
The exits build recorded images and pass to the CICS agent. The CICS agent sends them to the LPAR
agent and then frees them, so they are short lived.
The size of a recorded image is approximately 330 + 2 * ((COMMAREA length or sum of all
CONTAINER lengths) + INPUTMSG length).
The amount of ECDSA required to accommodate the recorded images depends on the average size
that is calculated in the previous paragraph, and the transaction rate.
Playback images of a CICS LINK are also built in ECDSA when a Virtual Service is deployed.
At the beginning of a virtualized CICS LINK, the exits build a playback request and pass it to the CICS
agent. The CICS agent forwards it to the LPAR agent.
When the CICS agent receives the playback response, the response is matched to the original
request. Both the request and response are passed to the exits, which free them and complete the
CICS LINK.
The size of a playback request and response is approximately 300 + (COMMAREA length or sum of all
CONTAINER lengths).
The amount of ECDSA required to accommodate the playback images depends on the average size
that is calculated in the previous paragraph, and the transaction rate.
22-Jul-2016
1387/2016
1388/2016
Input or
Output
Data
Type
Description
Token
Input
/Output
Unknow
n
Group
Output
CICSPlex 8
Output
Sysid
Input
/Output
Applid
Input
/Output
Jobnam 8
e
Input
/Output
LPAR
Input
/Output
Sysplex 8
Input
/Output
*These parameters should only be changed by the exit in the rare case that multiple CICS regions
connect to the same DevTest LPAR Agent and with duplicate values. These values have no effect on
the operation of the CICS region or the DevTest CICS Agent and are only used by the DevTest registry
to establish the uniqueness of DevTest CICS Agents.
ITKO.CICSAGNT.CNTL(SAMP1EX1) contains a sample COBOL ITKOUEX1. This sample sets the user
group to the first four characters of the CICS job name.
ITKO.CICSAGNT.CNTL(ITKOEX1C) contains the COBOL COMMAREA copybook.
ITKO.CICSAGNT.CNTL(ITKOEX1A) contains the Assembler COMMAREA copybook.
ITKO.CICSAGNT.CNTL(COMPUEX1) contains COBOL compile JCL.
22-Jul-2016
1389/2016
Input or
Output
Token
Input/Output Unknow 8 bytes that the user exits can use. Maintained across
n
exit calls.
Data
Type
Description
22-Jul-2016
1390/2016
22-Jul-2016
Paramet Leng
er
th in
Byte
s
Token
Input Un 8 bytes that the user exits can use. Maintained across exit calls.
/Out kn
put ow
n
Call
Type
Image
Type
COMMA 4
REA
Address
COMMA 2
REA
Length
Calling 8
Program
Target 8
Program
New
4
COMMA
REA
Address
Input Ad For recording: The address of the new consolidated COMMAREA is placed
/Out dre here by this exit. This exit typically GETMAINs the area.
put ss
1391/2016
For Playback: The address of the new consolidated COMMAREA from the
VSE response is placed here. This exit copies the contents to the application
COMMAREA.
New
2
COMMA
REA
Length
Input Bin For recording: The length of the new consolidated COMMAREA is placed
/Out ary here by this exit.
put
For Playback: The length of the new consolidated COMMAREA from the VSE
response is placed here for this exit to use.
Return 1
Code
Outp Bin 0 indicates that the COMMAREA was successfully consolidated. The
ut
ary DevTest CICS Agent will use the New COMMAREA Address and New
COMMAREA Length to create the recorded image.
4 indicates that this exit was successful; however there is no new
COMMAREA created. The DevTest CICS Agent uses the COMMAREA from
the CICS LINK to create the recorded image.
8 indicates that this exit failed and there is no new COMMAREA. The
DevTest CICS Agent returns to the application from the CICS LINK with
EIBRCODE, EIBRESP, and EIBRESP2 as indicated in the following parameters.
12 indicates all the processing of return code 8, and the indication that this
exit should be removed from future DevTest CICS Link recording and
playback.
EIBRCO 6
DE
Outp Bin The EIBRCODE value to be used when the Return Code is 8 or 12.
ut
ary
EIBRESP 4
Outp Bin The EIBRRESP value to be used when the Return Code is 8 or 12.
ut
ary
EIBRESP 4
2
Outp Bin The EIBRRESP2 value to be used when the Return Code is 8 or 12.
ut
ary
22-Jul-2016
1392/2016
This sample handles virtualizing a CICS program that has data that is passed in or out with a
Temporary Storage Queue (TSQ). See the sample for a full description.
ITKO.CICSAGNT.CNTL(ITKOEX3A) contains the Assembler COMMAREA copybook.
ITKO.CICSAGNT.CNTL(ASMBUEX3) contains the assembly JCL.
22-Jul-2016
1393/2016
503 / x'1F7'
The DevTest LPAR Agent was shut down, resulting in cancellation of all pending playback
requests.
1394/2016
22-Jul-2016
1395/2016
1396/2016
22-Jul-2016
1397/2016
More Information:
DevTest CICS Agent Message Descriptions (see page 1398)
1398/2016
22-Jul-2016
1399/2016
ITKO0002 - iTKO exit [XPCREQ | XPCREQC] at xxxxxxxx GWA at xxxxxxxx Len 9999 is enabled and
started
Message Type:
Informational
Description:
The indicated exit (XPCREQ or XPCREQC) was installed at the indicated address with a Global Work
Area at the indicated address of the indicated length. The exit was enabled and started.
Typically, two of these messages appear: one for XPCREQ and one for XPCREQC. Both have the same
GWA address and length.
Action:
None
ITKO0003 - iTKO exit [XPCREQ | XPCREQC] was enabled but not started
Message Type:
Fatal Error
Description:
The indicated exit (XPCREQ or XPCREQC) was enabled; however, it was not possible to start the exit.
The ITKO recording and playback capability do not function properly.
An ITKO0001 message typically accompanies this message.
Action:
Diagnose the accompanying ITKO0001 message and correct the issue.
22-Jul-2016
1400/2016
22-Jul-2016
1401/2016
1402/2016
ITKO0010 - [Recorded Image | Playback Image | LPAR Agent list] PLO failed in [ITKPCRQ | ITKPCRC]
Exit
Message Type:
Warning
Description:
The PLO (z/OS Perform Locked Operation) command failed.
PLO is used to serialize the manipulation of three queues/lists used to communicate between the
exits and the agent. The Recorded Image queue contains recorded images to for the agent to
process. The Playback Image queue contains playback requests for the agent to process. The LPAR
Agent List contains the playback responses that the agent receives to be passed to the exits.
For a Recorded Image queue entry, the exit discards the recorded image.
For a Playback Image queue entry, the image is discarded and the transaction continues without
playback (virtualization).
22-Jul-2016
1403/2016
For an LPAR Agent List entry (playback response), the image is orphaned on the LPAR Agent List by
the exit.
Action:
Report the error to CA support.
In the exit XPCREQ (module ITKPCRQ) or exit XPCREQC (module ITKOPCRC), the update an after
22-Jul-2016
1404/2016
22-Jul-2016
1405/2016
ITKO0104 - iTKO [Recorded Image | Playback Image | LPAR Agent Img] PLO failed in Agent
Message Type:
Warning
Description:
22-Jul-2016
1406/2016
1407/2016
ITKO0109 - Socket func [INITAPI | SELECTEX | SEND | RECV | CONNECT | CLOSE | PTON | TERMAPI]
failed. RETCODE=xXXXXXXXX ERRNO=999999
Message Type:
Warning
Description:
An error occurred on the TCP/IP connection to the LPAR Agent.
The message Socket func RECV failed. RETCODE=x00000000 ERRNO=000000 typically indicates a
disconnect from the LPAR Agent. An ITKO0111 message accompanies this message. An error in the
SEND function can also indicate an LPAR Agent disconnect.
The ERRNO values are documented in the IBM publication z/OS Communications Server IP CICS
Sockets Guide.
Action:
Determine if the error is due to a DevTest LPAR Agent disconnect or other environmental issue and
correct the issue. Otherwise, report the error to Support.
22-Jul-2016
1408/2016
22-Jul-2016
1409/2016
22-Jul-2016
1410/2016
22-Jul-2016
1411/2016
22-Jul-2016
1412/2016
22-Jul-2016
1413/2016
1414/2016
Action:
22-Jul-2016
1415/2016
22-Jul-2016
1416/2016
1417/2016
22-Jul-2016
1418/2016
22-Jul-2016
1419/2016
1.
DevTest Solutions - 9.5
The following example of command-line FTP shows the proper transfer to z/OS of data sets
ITKO.LPARAGNT.CNTL.UNLOAD and ITKO.LPARAGNT.LOAD.UNLOAD. You can change the z/OS
file names for your data set naming conventions.
ftp>quoteSITELRECL=80RECFM=FBBLKSIZE=3120TRACKSPRI=40SEC=5
200SITEcommandwasaccepted
ftp>bin
200RepresentationtypeisImage
ftp>putiTKOLPARAgentLoad'ITKO.LPARAGNT.LOAD.UNLOAD'
200PortrequestOK.
125StoringdatasetITKO.LPARAGNT.LOAD.UNLOAD
250Transfercompletedsuccessfully.
ftp>quoteSITELRECL=80RECFM=FBBLKSIZE=3120TRACKSPRI=10SEC=1
200SITEcommandwasaccepted
ftp>putiTKOLPARAgentCntl'ITKO.LPARAGNT.CNTL.UNLOAD'
200PortrequestOK.
125StoringdatasetITKO.LPARAGNT.CNTL.UNLOAD
250Transfercompletedsuccessfully.
2. Restore the Extended Partitioned Datasets (PDSEs) and Partitioned Dataset (PDS).
The LPAR Agent load library PDSE and control (JCL) library PDS are restored with the TSO
RECEIVE command, which typically runs in a batch job.
The following sample JCL restores the Extended Partitioned Data Sets (PDSE) and Partitioned
Data Set (PDS) from the FTPd data sets ITKO.LPARAGNT.LOAD and ITKO.LPARAGNT.CNTL on
volume VOL001. The data set names can be changed for your site data set naming
conventions.
//job
//*
//*UnloadtheLOADLibrarywithTSORECEIVE
//*
//UNLOADEXECPGM=IKJEFT01,DYNAMNBR=10
//SYSTSPRTDDSYSOUT=*
//SYSPRINTDDSYSOUT=*
//SYSOUTDDSYSOUT=*
//SYSTSINDD*
RECEIVEINDSNAME('ITKO.LPARAGNT.LOAD.UNLOAD')
DATASET('ITKO.LPARAGNT.LOAD')VOLUME(VOL001)
RECEIVEINDSNAME('ITKO.LPARAGNT.CNTL.UNLOAD')
DATASET('ITKO.LPARAGNT.CNTL')VOLUME(VOL001)
/*
22-Jul-2016
1420/2016
22-Jul-2016
1421/2016
PortClient
When running in server mode, defines the value of the well-known port to which clients
connect. This port number must match the value that the lisa.mainframe.bridge.server.
port property in lisa.properties specifies.
Default: 3997
Server
When running in client mode, specifies the IP address of the server to which to connect.
This IP address typically matches the IP address of the DevTest Server host running the
registry.
ServerPort
When running in client mode, defines the port number that the DevTest Server registry
uses. This port must match the value that the lisa.mainframe.bridge.port property in lisa.
properties specifies.
PortAgent
Defines the value of the well-known port that CICS agents connect to. This port number
must match the value that all CICS agents connecting to this LPAR Agent configure.
Default: 3998
InitialTrace
Specifies whether packet tracing is initially turned on.
Values:
True: Tracing is turned on for all connections
False: Tracing is turned off for all connections
Limits: These values are not case-sensitive.
Default: False
BufferSize
Defines the initial buffer size allocated. This value is typically set to twice the size of the
largest data payload expected. The buffer size can be reallocated up to the configured
maximum when packets of a larger size than this value are received.
Default: 65536
MaxBufferSize
Defines the maximum packet size to be accepted. A packet larger than this value is
discarded and a message is logged. A value of 0 disables the size verification, and packets
of any size from a client are accepted.
Default: 0
The following sample configuration file for running in server mode is in the CONFIGSV
member of ITKO.LPARAGNT.CNTL:
#
#Asampleservermodeconfigurationfile
#
Name=DevTestLPARAgent
#
#Modecanbe"Client"or"Server"
#
22-Jul-2016
1422/2016
#
#Theportusedasaserverfortheagentconnections
#
PortAgent=3998
#
BufferSize=65536
MaxBufferSize=65536
#
The following sample configuration file for running in client mode is found in the CONFIGCL
member of ITKO.LPARAGNT.CNTL:
#
#Asampleclientmodeconfigurationfile
#
Name=DevTestLPARAgent
#
#Modecanbe"Client"or"Server"
#
Mode=Client
Server=10.0.0.1
ServerPort=61617
#
#Theportusedasaserverfortheagentconnections
#
PortAgent=3998
#
BufferSize=65536
MaxBufferSize=65536
#
22-Jul-2016
1423/2016
The Type is A for "agent connection" or C for "client connection". If a T follows the A or C, it means
that packet tracing is enabled for that connection. The IP address and Port number identify the
source of the connection. In and Out show the number of packets that were received from and sent
to the peer, respectively. The Connected date and time shows when the connection was created. The
Connected date and time use the time zone value that is specified on the PARM of the proc EXEC
statement.
The following output is an example of the T command:
FLPARAGNT,T3
+ITKO9003-Commandaccepted
+TracingforID3isON
FLPARAGNT,T3OFF
+ITKO9003-Commandaccepted
+TracingforID3isnowOFF
22-Jul-2016
1424/2016
22-Jul-2016
1425/2016
1426/2016
22-Jul-2016
1427/2016
Administering
This section provides administrators with procedures to help them perform regular administrative
duties in DevTest Solutions.
General Administration (see page 1428)
Database Administration (see page 1452)
License Administration (see page 1467)
Security (see page 1483)
Logging (see page 1523)
Monitoring (see page 1528)
General Administration
This section contains the following topics that provide information on general administration of
DevTest:
Default Port Numbers (see page 1428)
Shared Installation Type (see page 1431)
Directory Structure (see page 1432)
Running Server Components as Services (see page 1436)
Running DevTest Solutions with Ant and JUnit (see page 1437)
Memory Settings (see page 1444)
Third-Party File Requirements (see page 1446)
Enabling Additional Scripting Languages (see page 1451)
Note: As with any socket communication, ephemeral ports are consumed as necessary
22-Jul-2016
1428/2016
DevTest Component
Property
lisa.webserver.port
devtest.port
broker.webserver.port
lisadb.internal.port, lisadb.pool.common.url
Not applicable
dradisdb.internal.port
lisa.net.15.port
lisa.net.9.port
lisa.net.5.port
lisa.net.11.port
lisa.net.0.port
lisa.pathfinder.broker.port
lisa.net.3.port
lisa.net.2.port
lisa.net.4.port
lisa.net.8.port
lisa.net.1.port
Not applicable
laf.httpproxy.port
lisa.mainframe.bridge.server.port
lisa.mainframe.bridge.port
If more than one simulator is created on the same computer, the port numbers for the new
simulators are increased from 2014. For example, three more simulators would have the port
numbers 2015, 2016, and 2017.
Typically, there is one coordinator for each lab. However, if you create more coordinators, then you
define the port on the command line. For example:
CoordinatorServer--name=tcp://hostname:2468/Coordinator2
1429/2016
DevTest Component
Property
1505
lisa.webserver.port
2004
VSE Manager
lisa.net.9.port
2005
Test Runner
lisa.net.5.port
2006
ServiceManager
lisa.net.11.port
2009
Broker
lisa.pathfinder.broker.port
2999
Not applicable
3128
HTTP proxy
laf.httpproxy.port
DevTest Component
1098
JNDI
1099
JNDI
1528
Derby database
8080
HTTP
22-Jul-2016
1430/2016
Note: If you want to install Component Services and you are an Administrator, use the local
install.
22-Jul-2016
1431/2016
If you select the shared installation type in the installer, the installer prompts you to specify the data
directory and the temporary files directory. The default location of each directory is the USER_HOME
directory.
In a shared installation, the lisa.user.properties file is added to the LISA_HOME directory and the
USER_HOME directory for the user that is running the installation. This file contains the lisa.data.dir
and lisa.tmpdir properties. You can specify the location of the file by setting the lisa.user.properties
system property or the LISA_USER_PROPERTIES environment variable. If either of the properties
have been defined as a system property, the system property definition takes precedence.
Note: Although lisa.tmpdir allows you to change the location of where you can store your
temporary files, we do not recommend that you change this property to save the
temporary files out to an external mount point or external share. If you encounter issues
with product instability, and you are using an external share for temp file storage, Support
may instruct you to go back to using a local disk for temp file storage for continued support
of your environment.
New users on different computers must manually set up their own lisa.user.properties file in their
USER_HOME directory before they attempt to access a shared installation. You can copy the file from
the LISA_HOME directory, or you can create it manually if you want to use different directories.
If you attempt to start any DevTest component before setting up this property file, the components
will not start. An error message appears on the screen and in the log files indicating an error reading
the lisa.user.properties file.
Directory Structure
This page describes the directory structure of DevTest Workstation and DevTest Server.
DevTest Workstation Directories (see page 1433)
DevTest Server Directories (see page 1434)
This page assumes that the local installation type was selected during the installation of DevTest
Solutions. If the shared installation type (see page 1431) was selected, the following directories can be
in a location other than LISA_HOME:
cvsMonitors
database
hotDeploy
locks
tmp
22-Jul-2016
1432/2016
.install4j
Contains the installer.
addons
Contains the DevTest add-ons.
agent
Contains the files for the DevTest Java Agent.
bin
Contains the executable files for DevTest Workstation and other components.
defaults
Contains the audit document and staging documents that are common across all projects. Projectspecific staging documents are located in the Projects directory.
doc
Contains the license agreement, JavaDocs for the DevTest Java Agent, and JavaDocs for the
Software Development Kit (SDK).
examples
A default project containing examples that use the demo server.
examples_src
Examples source files and the Kiosk-related files.
hotDeploy
A directory that DevTest monitors. This file contains Java classes and JAR files. Java classes and
JAR files in this directory are on the DevTest classpath. Any new files or directories added to this
directory are dynamically added to the DevTest classpath.
Putting a custom extension into hotDeploy still requires rebooting the DevTest component
(for example, VSE or DevTest Workstation) before the extension is available for use. The
HotDeployClassLoader will load the extensions class files, but the "lisaextension" file is
not discovered automatically, so the extension is still unknown to DevTest. The
"lisaextension" files are only discovered during start-up.
incontainer
Contains the in-container testing instructions.
jre
22-Jul-2016
1433/2016
.install4j
Contains the installer.
addons
Contains the DevTest add-ons.
agent
Contains the files for the DevTest Java Agent.
bin
Contains the executable files for the registry, coordinator, simulator, VSE, DevTest Workstation,
and other components. This directory also contains the following batch files:
22-Jul-2016
1434/2016
1435/2016
On UNIX, to configure the services to start automatically, consult your system administrator.
22-Jul-2016
1436/2016
22-Jul-2016
1437/2016
to
log4j.rootCategory=DEBUG,A1
22-Jul-2016
1438/2016
1439/2016
<filesetdir="<todirspecifiedinthejunitreporttag>">
<includename="TEST-*.xml"/>
</fileset>
22-Jul-2016
1440/2016
<reportformat="frames"todir="<todirspecifiedinthejunitreporttag>">/>
</junitreport>
You can specify your own file set and report. Because the task is a direct subclass of junitreport, all
the attributes and nested elements that junitreport has are supported.
We recommend specifying the inherited toDir attribute in most cases, although it defaults to the
current working directory.
22-Jul-2016
1441/2016
publicclassJUnit3TestCaseextendsTestCase{
publicvoidtestOneIsOne(){
assertEquals(1,1);
}
publicvoidtestTwoIsThree(){
assertEquals(2,3);
}
publicclassJUnit3VanillaTestSuite{
publicstaticTestSuitesuite(){
TestSuitesuite=newTestSuite();
suite.addTest(newJUnit4TestAdapter(MyJUnit3TestCase.class));
returnsuite;
}
importorg.junit.Test;
publicclassJUnit4TestCase{
@Test
publicvoidoneIsOne(){assertEquals(1,1);}
@Test
publicvoidtwoIsThree(){assertEquals(2,3);}
22-Jul-2016
1442/2016
@RunWith(Suite.class)
@Suite.SuiteClasses({JUnit4TestCase.class})
publicclassJUnit4VanillaTestSuite{//empty}
Note: If loading your JUnit test returns an IllegalArgumentException on the JUnit step,
confirm that you added .class to the end of the class name. You can manually verify the
spelling of the classname or use the classpath browser to locate the class.
common-macros.xml: This file contains macros for performing various tasks with DevTest Server
22-Jul-2016
1443/2016
Memory Settings
On Windows operating systems, the default memory limit for DevTest Workstation is 512 MB (Xmx512m).
For a Windows system, it is recommended that DevTest Server is on Windows 64-bit to leverage
more memory when needed.
2. To change the maximum memory to be allocated (Xmx), uncomment the following line:
#-Xmx512m
3. To change the minimum memory to be allocated (Xms), add the VM argument on another
line.
-Xms128M
The file would then specify the memory allocation range as in the following example.
-Xms128M
-Xmx512M
22-Jul-2016
1444/2016
1445/2016
1446/2016
RabbitMQ Requirements
Copy the JAR files to the LISA_HOME\lib directory or define the LISA_POST_CLASSPATH variable. Do
not copy the files to the LISA_HOME\hotDeploy directory.
The following JAR files are required:
commons-io-1.2.jar
rabbitmq-client.jar
22-Jul-2016
2.
1447/2016
2. Update the outbound partner profile on the client and server SAP system. Update the
outbound parameter in the partner profile for the respective IDoc type to send to the port
number associated with the RFC Destinations created in Step 1. This allows DevTest to receive
IDocs from the client and server SAP systems.
3. Create and import the connection property files in your project under the Data directory.
a. Create the RFC Connection (with properties from .jcoServer) for the client RFC
Destination created in Step 1.
b. Create the System Connection property file (with properties from .jcoDestination) for
the client SAP system.
c. Create the RFC Connection (with properties from .jcoServer) for the server RFC
Destination created in Step 1.
d. Create the System Connection property file (with properties from .jcoDestination) for
the server SAP system.
Before you begin recording, you must also create and import the connection property files in your
project under the Data directory. You need these files to start JCo servers to receive IDocs from and
forward IDocs to the client and server SAP systems. You need the RFC Connection (with properties
from .jcoServer) and System Connection (with properties from .jcoDestination) property files. You
need these files to start JCo servers to receive IDocs from and forward IDocs to the client and server
SAP systems. Consult the SAP administrator about populating these property files.
1448/2016
22-Jul-2016
1449/2016
Note: If the operating system is a Japanese version, use the files that are listed for
WebSphere MQ 7.
22-Jul-2016
1450/2016
22-Jul-2016
1451/2016
To enable an additional scripting language, put the language's jar file into the hotdeploy directory of
the remote coordinator, server, or CA Service Virtualization. At next startup, the additional language
will be in the Language drop-down in DevTest Workstation.
Database Administration
This section contains the following pages describing database administration:
External Registry Database Configuration (see page 1452)
External Java Agent Database Configuration (see page 1458)
External Enterprise Dashboard Database Configuration (see page 1459)
Database Maintenance (see page 1463)
Internal Database Configuration (see page 1466)
Note: For information about database system requirements, see System Requirements
(see page 85).
The site.properties file includes properties for each of the supported databases:
IBM DB2
Derby
MySQL
Oracle
Microsoft SQL Server
If you are running DevTest Server, you do not need to reconfigure each DevTest Workstation
installation. The configuration in site.properties is propagated to each workstation, VSE, coordinator,
simulator server, and any other DevTest component that connects to the registry.
The LISA_HOME\database\dropSchema directory contains the following files for the registry
database:
db2_drop.ddl
derby_drop.ddl
mysql_drop.ddl
22-Jul-2016
1452/2016
lisadb.pool.common.driverClass=com.ibm.db2.jcc.DB2Driver
lisadb.pool.common.url=jdbc:db2://[HOSTNAME]:[PORT]/[DATABASENAME]:
progressiveStreaming=2;
lisadb.pool.common.user=[USER]
lisadb.pool.common.password=[PASSWORD]
lisadb.pool.common.minPoolSize=0
lisadb.pool.common.initialPoolSize=0
lisadb.pool.common.maxPoolSize=10
lisadb.pool.common.acquireIncrement=1
lisadb.pool.common.maxIdleTime=45
lisadb.pool.common.idleConnectionTestPeriod=5
To minimize the number of connections to the database, connection pooling is used. The underlying
implementation of the pooling functionality is c3p0. For detailed information about the settings, see
http://www.mchange.com/projects/c3p0/index.html#configuration_properties. By default, all the
components use the common connection pool. However, you can define a separate pool for each
component or mix and match.
For the reporting database, we recommend at least 10 GB for optimal performance. A database for
VSE is required only if you are working with legacy images created in a release earlier than 6.0.
The value of any property that ends with password is automatically encrypted at startup.
Note: The remote installations of DevTest Workstation, coordinator, simulator server, VSE,
or any other remote DevTest component do not require more configuration. They all
receive site.properties from the registry when they connect and configure their database
access accordingly.
22-Jul-2016
1453/2016
lisadb.pool.common.driverClass=com.mysql.jdbc.Driver
lisadb.pool.common.url=jdbc:mysql://DBHOST:DBPORT/DBNAME
lisadb.pool.common.user=database_username
lisadb.pool.common.password=database_password
lisadb.pool.common.minPoolSize=0
lisadb.pool.common.initialPoolSize=0
lisadb.pool.common.maxPoolSize=10
lisadb.pool.common.acquireIncrement=1
lisadb.pool.common.maxIdleTime=45
lisadb.pool.common.idleConnectionTestPeriod=5
To minimize the number of connections to the database, connection pooling is used. The underlying
implementation of the pooling functionality is c3p0. For detailed information about the settings, see
http://www.mchange.com/projects/c3p0/index.html#configuration_properties. By default, all the
components use the common connection pool. However, you can define a separate pool for each
component or mix and match.
The MySQL database must provide collation and characters set supporting UTF-8; double-byte
characters are stored in the ACL and reporting tables. The default code page for the database has to
be UTF-8; it is not enough only to define your database as UTF-8. If the MySQL database is not UTF-8,
then runtime errors occur.
22-Jul-2016
1454/2016
Note: The remote installations of DevTest Workstation, coordinator, simulator server, VSE,
or any other remote DevTest component do not require more configuration. They all
receive site.properties from the registry when they connect and configure their database
access accordingly.
22-Jul-2016
1455/2016
lisadb.pool.common.driverClass=oracle.jdbc.driver.OracleDriver
## Select one of the two connection URLs depending on usage of SID or SERVICE
lisadb.pool.common.url=jdbc:oracle:thin:@[HOST]:1521:[SID]
lisadb.pool.common.url=jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
lisadb.pool.common.user=[USER]
lisadb.pool.common.password=[PASSWORD]
lisadb.pool.common.minPoolSize=0
lisadb.pool.common.initialPoolSize=0
lisadb.pool.common.maxPoolSize=10
lisadb.pool.common.acquireIncrement=1
lisadb.pool.common.maxIdleTime=45
lisadb.pool.common.idleConnectionTestPeriod=5
To minimize the number of connections to the database, connection pooling is used. The underlying
implementation of the pooling functionality is c3p0. For detailed information about the settings, see
http://www.mchange.com/projects/c3p0/index.html#configuration_properties. By default, all the
components use the common connection pool. However, you can define a separate pool for each
component or mix and match.
For the reporting database, we recommend at least 10 GB for optimal performance. A database for
VSE is required only if you are working with legacy images created in a release earlier than 6.0.
The value of any property that ends with password is automatically encrypted at startup.
Note: The remote installations of DevTest Workstation, coordinator, simulator server, VSE,
or any other remote DevTest component do not require more configuration. They all
receive site.properties from the registry when they connect and configure their database
access accordingly.
1456/2016
lisadb.pool.common.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
lisadb.pool.common.url=jdbc:sqlserver://SERVER:PORT;databaseName=DATABASENAME
lisadb.pool.common.user=database_username
lisadb.pool.common.password=database_password
lisadb.pool.common.minPoolSize=0
lisadb.pool.common.initialPoolSize=0
lisadb.pool.common.maxPoolSize=10
lisadb.pool.common.acquireIncrement=1
lisadb.pool.common.maxIdleTime=45
lisadb.pool.common.idleConnectionTestPeriod=5
To minimize the number of connections to the database, connection pooling is used. The underlying
implementation of the pooling functionality is c3p0. For detailed information about the settings, see
http://www.mchange.com/projects/c3p0/index.html#configuration_properties. By default, all the
components use the common connection pool. However, you can define a separate pool for each
component or mix and match.
For the reporting database, we recommend at least 10 GB for optimal performance. A database for
VSE is required only if you are working with legacy images created in a release earlier than 6.0.
The value of any property that ends with password is automatically encrypted at startup.
Note: The remote installations of DevTest Workstation, coordinator, simulator server, VSE,
or any other remote DevTest component do not require additional configuration. They all
receive site.properties from the registry when they connect and configure their database
access accordingly.
22-Jul-2016
1457/2016
1458/2016
When you configure the database configuration properties for your database, use the new pool
name. For example:
lisadb.pool.cai.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
lisadb.pool.cai.url=jdbc:sqlserver://localhost:1433;databaseName=cai
lisadb.pool.cai.user=sa
lisadb.pool.cai.password=xyz
Note: For information about database system requirements, see System Requirements
(see page 85).
The _dradis.properties file includes properties for each of the supported databases:
IBM DB2
Derby
MySQL
Oracle
Microsoft SQL Server
22-Jul-2016
1459/2016
The value of any property that ends with password is automatically encrypted at startup.
Follow these steps:
1. Ensure that the code page of the DB2 database is 1208.
2. Ensure that the page size of the DB2 database is at least 16 KB.
3. In the LISA_HOME directory, locate the _dradis.properties file.
4. Change the file name to dradis.properties.
5. Open the dradis.properties file.
6. Configure the database configuration properties.
You typically update the following properties:
dradis.db.url
dradis.db.user
dradis.db.password
22-Jul-2016
1460/2016
The schema is automatically created in the database when the registry starts for the first time.
However, if you do not want the Enterprise Dashboard user to have DBA privileges, you can
manually create the schema beforehand. The db2_enterprisedashboard.ddl file in the
LISA_HOME\database directory contains SQL statements that can serve as the basis for
creating the Enterprise Dashboard tables and indexes.
7. Set the dradis.db.internal.enabled property to false.
8. Start Enterprise Dashboard.
The MySQL database must provide collation and characters set supporting UTF-8. The default code
page for the database has to be UTF-8; it is not enough only to define your database as UTF-8. If the
MySQL database is not UTF-8, then runtime errors occur.
The value of any property that ends with password is automatically encrypted at startup.
Follow these steps:
1. In the LISA_HOME directory, locate the _dradis.properties file.
2. Change the file name to dradis.properties.
3. Open the dradis.properties file.
4. Configure the database configuration properties.
You typically update the following properties:
dradis.db.url
dradis.db.user
dradis.db.password
The schema is automatically created in the database when the registry starts for the first time.
However, if you do not want the Enterprise Dashboard user to have DBA privileges, you can
manually create the schema beforehand. The mysql_enterprisedashboard.ddl file in the
LISA_HOME\database directory contains SQL statements that can serve as the basis for
creating the Enterprise Dashboard tables and indexes.
5. Set the dradis.db.internal.enabled property to false.
6. Add the MySQL JDBC driver to the LISA_HOME\lib\dradis directory. The minimum version of
22-Jul-2016
1461/2016
The value of any property that ends with password is automatically encrypted at startup.
Follow these steps:
1. Ensure that the character set of the Oracle database supports Unicode. In addition, for the
initial creation of the database, the Oracle user must have the CREATE VIEW system privilege.
Without this privilege, the following error might be generated during installation: Schema
creation failed: ORA-01031: insufficient privileges.
2. In the LISA_HOME directory, locate the _dradis.properties file.
3. Change the file name to dradis.properties.
4. Open the dradis.properties file.
5. Configure the database configuration properties.
You typically update the following properties:
dradis.db.url
dradis.db.user
dradis.db.password
For the dradis.db.url property, you can use the service name.
The schema is automatically created in the database when Enterprise Dashboard starts for the
first time. However, if you do not want the Enterprise Dashboard user to have DBA privileges,
you can manually create the schema beforehand. The oracle_enterprisedashboard.ddl file in
the LISA_HOME\database directory contains SQL statements that can serve as the basis for
creating the Enterprise Dashboard tables and indexes.
6. Set the dradis.db.internal.enabled property to false.
7. Ensure that LISA_HOME\lib\dradis contains the JDBC driver. In most cases, ojdbc7.jar is the
correct driver for Java 1.7. If you are using Java 1.6, then use ojdbc6.jar. If you are using Java
1.5, then use ojdbc5.jar.
1462/2016
The value of any property that ends with password is automatically encrypted at startup.
Follow these steps:
1. In the LISA_HOME directory, locate the _dradis.properties file.
2. Change the file name to dradis.properties.
3. Open the dradis.properties file.
4. Configure the database configuration properties.
You typically update the following properties:
dradis.db.url
dradis.db.user
dradis.db.password
The schema is automatically created in the database when the registry starts for the first time.
However, if you do not want the Enterprise Dashboard user to have DBA privileges, you can
manually create the schema beforehand. The sqlserver_enterprisedashboard.ddl file in the
LISA_HOME\database directory contains SQL statements that can serve as the basis for
creating the Enterprise Dashboard tables and indexes.
5. Set the dradis.db.internal.enabled property to false.
6. Start Enterprise Dashboard.
Database Maintenance
This section details processes available for database maintenance.
Automatic Reporting Maintenance (see page 1464)
Automatic Deletion of Audit Log Entries (see page 1465)
Automatic Deletion of Transactions (see page 1465)
Automatic Deletion of Tickets (see page 1466)
22-Jul-2016
1463/2016
Report Cleaner
This process is responsible for deleting "expired" report runs from the database.
perfmgr.rvwiz.whatrpt.autoExpire=true
You can enable or disable the report cleaner by setting this property. If disabled, the report
cleaner process does not run, and the remaining properties have no effect.
perfmgr.rvwiz.whatrpt.expireTimer=30d
Sets the expiration value of a suite or test. Once a suite or test is older than this value, it is
deleted. The property value is a number followed by a suffix. The following suffixes are valid, with
t being the default:
t=milliseconds
s=second
m=minutes
h=hours
d=days
w=weeks
Keep in mind that tests and suites are deleted at approximately the same time of day that they
were created. Adding several hours can minimize delete processes running during the day.
However, there is no absolute way to ensure the times that a delete process runs.
perfmgr.rvwiz.whatrpt.forceCompleteTimer=24h
To force the completion of a test (in the reporting database). Some suites or tests that fail to
finish cleanly are never marked as "finished" in the database. Tests that are not marked "finished"
are not deleted by the report cleaner and do not have performance summary calculations
performed. Any test that is older than this value is marked as completed in the database. The
22-Jul-2016
1464/2016
22-Jul-2016
1465/2016
Note: For information about database system requirements, see Installing (see page 84).
22-Jul-2016
1466/2016
License Administration
The DevTest 8.0 and later license agreement is based on the maximum allowed concurrent user
sessions by user type. Contact your account team if you have any questions about your specific
licensing agreement.
The license is file-based, where there is one file for the enterprise. This file activates DevTest
Solutions at the initial startup following installation.
The Local License Server (LLS) and Internet Based License Server are no longer supported for DevTest
Solutions 8.0 and later.
Concurrent usage data by user type is automatically collected.
The Enterprise Dashboard produces licensing reporting.
A Usage Audit Report, which reports maximum concurrent usage by user type, is a tool that helps you
assess compliance with the license agreement.
For more information, see How Licensing, ACLs, and Audit Reports Work Together (see page 1469).
The following diagram shows the activation of DevTest Solutions by a license file that is stored with
the Enterprise Dashboard. The registries collect audit data from the UIs and CLIs that users log in to,
including the Workstation, the Portal, and command-line utilities such as TestRunner and adduser.
The registries forward the audit data to the Enterprise Dashboard. Administrators can generate a
DevTest Solutions Usage Audit Report to verify compliance with the license agreement.
22-Jul-2016
1467/2016
Honor-Based Licensing
Honor-based licensing overview:
The DevTest 8.0 and later license agreement is based on the maximum allowed concurrent user
sessions by user type. Contact your account team if you have any questions about your specific
licensing agreement.
The license is file-based, where there is one file for the enterprise. This file activates DevTest
Solutions at the initial startup following installation.
The Local License Server (LLS) and Internet Based License Server are no longer supported for
DevTest Solutions 8.0.
Concurrent usage data by user type is automatically collected.
The Enterprise Dashboard produces licensing reporting.
A Usage Audit Report, which reports maximum concurrent usage by user type, is a tool that helps
you assess compliance with the license agreement. Users with administrative privileges can
access this report.
For more information, see How Licensing, ACLs, and Audit Reports Work Together (see page 1469).
22-Jul-2016
1468/2016
The following diagram shows the activation of DevTest Solutions by a license file that is stored with
the Enterprise Dashboard. The registries collect audit data from the UIs and CLIs that users log in to,
including the Workstation, the Portal, and command-line utilities such as TestRunner and adduser.
The registries forward the audit data to the Enterprise Dashboard. Administrators can generate a
DevTest Solutions Usage Audit Report to verify compliance with the license agreement.
22-Jul-2016
1469/2016
License Activation
License activation for DevTest Solutions is file-based. CA Technologies provides you with a license file
(devtestlic.xml). During installation or upgrade of DevTest Solutions, the Setup wizard puts the file in
the LISA_HOME directory on the host where the Enterprise Dashboard is installed. Subsequent
installations of the Server component (DevTest Server) reference the URL of the Enterprise
Dashboard. License activation occurs the first time that you start the Enterprise Dashboard and the
registries. No other component requires license activation.
If you are upgrading, request a new devtestlic.xml license from CA Technologies. The current license
key generation process is leveraged to generate a product key that is delivered in the devtestlic.xml
file. This key is used to activate or unlock the Enterprise Dashboard.
ACL Activation
Access Control (ACL) is enabled by default. Before users can access DevTest Solutions, they must be
authenticated with valid credentials and then authorized to perform the tasks that are associated
with their role. You define for each user a user name, a password, and a role that is composed of a
set of permissions. Roles are tied to user types.
Users must log in with valid credentials to access any UI (User Interface) or CLI (Command Line
Interface). When a user opens the Workstation or browses to the Portal, a logon dialog is presented.
The user logs in with the credentials defined in DevTest or in LDAP, if you have configured DevTest to
use LDAP credentials. If the entered credentials match that of an authorized user, the UI opens. The
features that are presented to the user are based on the permissions you grant to that user.
For backward compatibility, one exception exists. Although ACL is enabled, authorized users can run
tests and can start virtual services without specifying a valid login user name and password.
Note: We recommend that you change the passwords for the standard users (see page 1505)
to ensure that only authenticated users gain access to DevTest Solutions.
Honor-based Compliance
The customer is responsible for license compliance with the terms of contract. The license that is
issued does not enforce the maximum concurrency by user type. As outlined in the Usage Audit
Report section, DevTest Solutions Usage Audit Reports are sent to CA Technologies upon request. The
CA account manager may contact you to assess your interest in expanding your purchase agreement
if the Audit Reports indicate concurrent usage of a user type that exceeds the agreement.
22-Jul-2016
1470/2016
Overview
The Overview tab provides details on the extent an enterprise is using the number of concurrent
users of each user type that their license permits. A given report provides data from all registries for
the specified date range. The Count data is shown by user type.
22-Jul-2016
1471/2016
Report Information
The report information section lists licensing information and the date range for this audit report.
Company: Name of the company that generated this report
License Key ID: The license key identifier
License Key Expiration: The date the license expires
Enterprise Dashboard Product Version: The version of DevTest
Reporting Period Start: The starting date for this report
Reporting Period End: The ending date for this report
Generated On: The date on which the report was generated
User Type
Reported user types include Continuous Application Insight Power User, Service Virtualization
Power User, Application Test Power User, and DevTest Runtime User.
If the user is granted permissions that are associated with more than one user type, the higher
user type is used. The user type hierarchy, from highest to lowest, follows:
1.
concurrent login sessions are recorded by registry. Concurrent usage occurs when two or more
22-Jul-2016
1472/2016
22-Jul-2016
1473/2016
22-Jul-2016
1474/2016
Component by User
The Component by User tab reports user session data from each registry that is connected to the
Enterprise Dashboard, sorted by registry, with a column for each UI or CLI with access during this
time period. Entries on this tab include all access, not only concurrent access.
Registry
Registry names are in the format:
registry@FQDN:2010
User Name
Names of users who logged in to a user interface or command-line interface for one or more
sessions.
User Type
The user type that is assigned to the associated user.
22-Jul-2016
1475/2016
Total Sessions
The sum of counts from the reported columns for the associated user, where the columns
represent either a UI session or a session using a CLI. User interfaces include DevTest
Workstation. Examples of CLIs include the DevTest Portal, the REST Invoke API and Test Runner.
Columns may vary by report, depending on where users log in. Some examples follow:
invoke2-api: The number of times this user initiated the DevTest Invoke API (see page 1780).
Workstation: The number of times this user opened a DevTest Workstation, connected to the
associated registry, and logged in.
Note: For details on generating this report, see Export Usage Audit Data (see page 1544).
Date
Registry 1
Registry 2
Registry 3
Total
10/07/2016
10/08/2016
10/09/2016
10/10/2016
10/11/2016
2. This data is summarized on the Overview page of the report as User Type, Maximum
Concurrent Use Counts, and Instances of Max Use Count. The count represents the largest
total for that user type. The instances of max use count represent the number of times over
the time period that this maximum concurrency occurred. For the example above, the
instance count would be 1 (the number of times that the Application Test Power Users
reached its maximum concurrent use count of 3).
22-Jul-2016
1476/2016
2.
User Types
ACL has the following user types:
SV Power User
CAI Power User
Test Power User
Runtime User
A user type can be associated with one or more roles. Each role is associated with only one user type.
For example, the Runtime User user type has three roles (System Administrator, Runtime, and
Guest), but the Runtime role is associated with only the Runtime User user type.
A user can be granted one or more roles. When granted multiple roles, the role that is associated
with the highest user type is used for usage auditing purposes. The user type hierarchy is made up of
the following user types:
CAI Power User and SV Power User are equal in the hierarchy and both are the highest user type.
Test Power User is lower than CAI Power User and SV Power User but higher than Runtime User.
Runtime User is the lowest user type.
22-Jul-2016
1477/2016
Note: See Standard User Types and Standard Roles (see page 1498) for details.
User types are hierarchical.
For purposes of the DevTest Solutions Usage Audit Report, the user type under which a user is
counted is the highest user type that is associated with an assigned role. For example, when the
fakeName user logs in to a DevTest UI or CLI, the user session is audited as belonging to the SV Power
User user type, even if fakeName performs only tasks that are associated with the Runtime role, such
as report administration.
22-Jul-2016
1478/2016
Licensing
What is concurrent licensing?
22-Jul-2016
1479/2016
Account Sharing
How are concurrent licenses calculated when we share a user: for example, admin?
If more than one user uses the same user ID simultaneously on different machines, each is counted
toward the concurrent use. If a user uses the same user ID to access different DevTest applications on
the same machine, it is counted as a single use .
For example, if you have six users who are logged on to DevTest Workstation with the admin user ID,
the Usage Report shows a concurrent use count of 6 for the user type that is associated with the
admin user ID. Note: We do not recommend sharing of user IDs.
To prevent users from sharing user IDs, we recommend connecting DevTest to your AD/LDAP
datasource. DevTest can enable AD/LDAP (see page 1517) authentication (see page 1517). DevTest
continues to provide authorization. This technique does not bind a user ID or login to a DevTest
Workstation . This technique does, however, provide some control because users are less likely to
share their AD/LDAP credentials.
Reporting
What type of licenses and how many concurrent licenses am I consuming?
To get this information, run a DevTest Solutions Usage Audit Report (see page 1471)by exporting
usage audit data (see page 1543) from the Enterprise Dashboard to Excel. See the Overview tab to see
the maximum concurrent sessions that are used by each license type for the time period you choose.
22-Jul-2016
1480/2016
How do we calculate runtime users? Are there limitations, for example runtime users that do
not log into DevTest?
The license counts are all based on login and logout records.
Every DevTest user login creates a user session and increments the license count by one. Every
DevTest user logout (including implicit logouts through timeouts) closes a user session and
decrements the license count by one.
Note: Anything that connects to the virtual services deployed on a VSE server consumes a license, but
these connections cannot be tracked in the usage audit report because they do not log in to DevTest.
How are concurrent licenses calculated when Im logged into one DevTest application (for
example, DevTest Workstation) on one machine and logged into another DevTest application
(for example, DevTest Portal) on a different machine?
In this example, because you are using two separate machines, you would consume two licenses. The
license type that is consumed is based on the actions that are performed during the user session.
How frequently is usage polled?
The information is collected continuously based on login and logout times. When an audit report is
requested, the data is examined to determine when the concurrent access occurs.
If a user is logged in, but is not performing any activity, is that user counted in the usage count?
Yes.
What about command-line interfaces like VSE Manager? Are those users counted in the usage
count?
Yes. Any utility that requires credentials is included in the usage count.
I am licensed for 10 SV Power Users, but I see as many as 15 concurrent users at one time. Is
there a problem with my license?
No, licensing for DevTest Solutions is honor-based (see page 1468). Use the Usage Audit Report to
monitor your compliance with the terms of your license.
My Component by User report shows a user type for ADMIN_USER. What is that user type and
do I need to be concerned about licensing for it?
While the ADMIN_USER type is included in the report, you do not need to consider it when
evaluating your compliance to your licensing agreement. The ADMIN_USER user type, which is
displayed on the Roles page as a combination CAI Power User and SV Power User types, is included in
the DevTest Solutions Usage Audit Report for your information, and is counted as an SV_POWER user
for licensing purposes.
The Overview tab indicates that I have 12 Concurrent users. When I click on the Component by
User tab, I only see four different user IDs. Can you explain why we need to get licenses for
more Power Users when we see only four different user IDs using the product?
On the Overview tab, you see that CAI Power User and Service Virtualization Power User have each
22-Jul-2016
1481/2016
On the Historical Usage tab, you can see when those high concurrent usage days occurred: for CAI
Power User, on March 7, and for SV Power User, on March 5 and March 13.
The Component by User tab does not reflect any information about concurrent usage. It does
indicate that in this example, there are only four different users who have used the product during
this time period: admin, barb, rob, and svpower. They have used various interfaces to connect to
three different registries.
22-Jul-2016
1482/2016
In this example, we can tell that users at this company are sharing user IDs, thus accounting for the
concurrent usage that is higher than the number of user IDs. To track product usage accurately, we
recommend that your users do not share user IDs.
Administration
Where can I specify timeout values for DevTest Workstation and DevTest Portal, so that users
who are not active will time out and not be counted in the Usage Audit Report?
The registry.max.user.lifetime.seconds property is the main session lifetime property that
determines how long a user session is valid after the last activity done by a user in a session.
This property specifies how many seconds the SSO security token is kept in memory for DevTest
Workstation to bypass authentication for the DevTest Portal and DevTest Workstation.
Can we implement ACL so that a user can log in from only one DevTest Workstation instance
and thus can occupy only one license per user ID?
No , once a user ID is given access, DevTest does not perform actions that "bind" a given user ID to a
DevTest Workstation IP address. User IDs are shown in the Usage Audit report.
When I perform an action (for example, log in to DevTest Workstation) how can I tell which
license type is consumed?
Each permission (listed in the Role UI, right-hand side) has a license type that is associated with it,
identified within parentheses.
If a user has multiple user types, how can I determine the effective user type for a new or
existing role?
You can view or change the permissions and essentially update the effective user type of a role,
within access control (see page 1494).
How does the Usage Audit Report differ from the User Activity Report?
The User Activity Report (see page 1512) is useful to show an administrator what users are
performing which activities in real time.
Security
This section contains the following pages that describe security options in DevTest :
Using SSL to Secure Communication (see page 1484)
SSL/TLS Protocol Configuration (see page 1488)
Using HTTPS Communication with the invoke APIs (see page 1489)
Using Kerberos Authentication (see page 1493)
Access Control (ACL) (see page 1494)
22-Jul-2016
1483/2016
You cannot specify this property in site.properties; that is too late in the bootstrap phase. This
property must be specified in local.properties (or on the command line).
If you then start a registry with no extra parameters - for example, it is listening on port 2010 (the
usual port) but it expects clients to use the SSL protocol - the service name for the registry is
ssl://hostname:2010/Registry.
If you want to connect to that registry from DevTest Workstation, use ssl://hostname:2010/Registry
instead of the usual tcp://hostname:2010/Registry. If you start a simulator on the same computer, it
is available on ssl://hostname:2014/Simulator, and it automatically connects to the registry at
ssl://hostname:2010/Registry with no property changes.
You can also mix and match SSL and normal TCP protocols. If you leave the lisa.net.default.protocol
property at its default setting (tcp), you can enable specific services for SSL by specifying the name of
the individual service with the "ssl:" protocol prefix, instead of the default "tcp:" prefix. For example,
to start a registry in SSL mode:
Registry--name=ssl://reghost.company.com:2010/Registry
To enable the SSL, use "ssl" in the service names instead of "tcp". For example:
Registry--name=ssl://reghost.company.com:2010/Registry
This command tells the simulator to use SSL to talk to the registry while also securing the simulator. If
you want the simulator itself to be unsecured, do this:
Simulator--registry=ssl://reghost.company.com:2010/Registry
Mixing secured and unsecured servers is not common. However, you may want to have unsecured
servers inside your firewall and secured servers in a public cloud. There is some overhead using SSL
encryption, which varies considerably depending on the hardware.
The lisa.net.default.protocol property defines the default protocol for ActiveMQ connections. The
property does not influence the protocol that is used when DevTest components start.
If you have DevTest Enterprise Dashboard configured to use SSL, the lisa.enterprisedashboard.server.
url property needs to be configured to have the value of ssl. Set this in the local.properties file.
22-Jul-2016
1484/2016
All communication with the Enterprise Dashboard is done through the webserver port (1506 by
default), and uses either HTTP or HTTPS.
To configure the Enterprise Dashboard to use HTTPS, create the dradis.properties file (by copying the
_dradis.properties file), and uncomment the dradis.webserver.https.enabled property.
dradis.webserver.https.enabled=true
To configure the registry to know that the Enterprise Dashboard is using HTTPS, uncomment the
devtest.enterprisedashboard.https.enabled property in the site.properties file.
devtest.enterprisedashboard.https.enabled=true
To configure the registry and all other components to use SSL by default, uncomment the lisa.net.
default.protocol value in the local.properties file.
lisa.net.default.protocol=ssl
SSL Certificates
By default, a self-signed certificate encrypts and decrypts the messages between components. VSE
also uses this certificate when recording https:// style web traffic. The certificate is in the
LISA_HOME\webreckeys.ks file.
When you set the default protocol to SSL and you do not change anything else, you use an "internal
DevTest" certificate. All DevTest users (not only your organization) share this internal certificate.
Using this certificate encrypts the network traffic, but it does not prevent an unauthorized user from
connecting to your simulator on a public cloud. To prevent this type of unauthorized access, use your
own certificate. You can also continue to use the "well-known" DevTest certificate, but enable access
control.
If you want to use your own certificate, you can override the certificate keystore by specifying the
following properties:
lisa.net.keyStore=/path/to/keystore.ks
lisa.net.keyStore.password=plaintextPassword
The first time DevTest reads the plain text password, it converts the password to an encrypted
property:
lisa.net.keyStore.password_enc=33aa310aa4e18c114dacf86a33cee898
22-Jul-2016
1485/2016
1.
The utility creates a file containing a certificate that is valid for 365 days.
2. Copy the file to LISA_HOME and update local.properties:
lisa.net.keyStore={{LISA_HOME}}keystore.ks
lisa.net.keyStore.password=MyNewSecretPassword
3. The first time DevTest reads the plain text password, it converts the password to an encrypted
property:
lisa.net.keyStore.password_enc=33aa310aa4e18c114dacf86a33cee898
The same keytool utility manipulates trust stores. In general, a keystore contains one
certificate and a trust store contains one or more certificates.
5. Export the certificate from the server keystore:
keytool-exportcert-rfc-aliasserverA-keystorekeyStore.ks-fileserverA.cer
The -rfc means to export the certificate as ASCII text instead of binary, to make it easier to
copy and paste. In our example, the resulting serverA.cer file looks like the following example:
-----BEGINCERTIFICATE----MIICEzCCAXygAwIBAgIEThZnYzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJDQjELMAkGA1UE
CBM420IxCzAJBgNVBAcTAkNCMQswCQYDVQQKEwJDQjELMAkGA1UECxMCQ0IxCzAJBgNVBAMTAkNC
MB4XDTExMDcwODAyMTE0N1oXDTEyMDcwNzAyMTE0N1owTJELMAkGA1UEBhMCQ0IxCzAJBgNVBAgT
AkNCMQswCQYDVQQHEwJDQjELMAkGA1UECDMCQ0IxCzAJBgNVBAsTAkNCMQswCQYDVQQDEwJDQjCB
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAhYfaN+dCrKQwYZ+KeaaPUI8DeXNiqQ/mS+KGnXnh
Pz08vdX/7HDLW4pzFhntjmkxxOi9dMwlO2thTD1cOxI571PotenMENo4nyiUAEnMK9MTiWEYr2cQ
b6/TUueBCjRJ9I0GPCI0WPS+0Na2Q/wq8gPCHmDRpw1Xgo4uZ1v6C/ECAwEAATANBgkqhkiG9w0B
AQUFAAOBgQByCsX9EoBFIGhcSwoRwEvapIrv8wTaqQPOKKyeIevSmbnERRu6+oi+cJftbdEfw6GG
CBddJH+dGZ9VeqLU8zBGasbU+JPzG5ElOgOXcUGeQQEaM1YMv6XWrIwNSljQk/MPZSt3ROtJOlae
JPKJXSQ610xof9+yLHH0ebUGhUjdlQ==
-----ENDCERTIFICATE-----
22-Jul-2016
6.
1486/2016
Now you have a cryptographically strong way of talking to your DevTest servers in the public
cloud. You must have the certificate on both sides for two DevTest components to talk to
each other.
7. If your client talks to more than one remote SSL server, run the same keytool command to
import the certificate to the trust store.
Note: In addition to the transport level security (the SSL), you can still enable finegrain Access Control Lists (ACL). Access Control Lists let you require users to
authenticate by user name and password. This type of security is similar to a
banking website that uses HTTPS but still requires you to identify yourself.
Similarly, the administrator for serverB wants to export the serverB certificate:
serverB>keytool-exportcert-aliaslisa-fileserverB.cer-keystoreserverB.ks
Acquire a copy of serverA.cer and serverB.cer, and then import them into your client trust store:
workstation>keytool-importcert-aliasserverA-fileserverA.cer-keystoretrustStore.
ts
workstation>keytool-importcert-aliasserverB-fileserverB.cer-keystoretrustStore.
ts
1487/2016
In addition to each client needing a server certificate in the client trustStore, the server component
needs a client certificate for each client in the server trustStore:
serverA>keytool-importcert-aliasclientX-fileclientX.cer-keystoretrustStore.ts
serverA>keytool-importcert-aliasclientY-fileclientY.cer-keystoretrustStore.ts
If clientZ attempts to connect to serverA, the connection fails because serverA does not have the
clientZ certificate in the serverA trustStore. This failure occurs even though clientZ has the serverA
certificate in the clientZ trustStore.
If your installation of DevTest is using an IBM JVM, the default SSL/TLS protocols are only
TLS 1.0 and SSL 3.0, as the IBM JVM does not support SSL 2.0.
To override these defaults, DevTest looks for the https.protocols system property to define which SSL
/TLS protocols to enable. This property represents a comma-separated list of SSL/TLS protocols that
the JVM supports. The values in this list must not have any quotes or white space before or after the
commas.
22-Jul-2016
1488/2016
Supported SSL/TLS Protocols and the Equivalent Values Expected by the JVM
SSL/TLS Protocol
TLS 1.2
TLSv1.2
TLS 1.1
TLSv1.1
TLS 1.0
TLSv1
SSL 3.0
SSLv3
SSL 2.0
SSLv2Hello
For example, setting the property to TLSv1,SSLv3,SSLv2Hello enables the TLS 1.0, SSL 3.0, and SSL 2.0
protocols.
There are two options for configuring the https.protocols system property.
Use . vmoptions Files to Configure the SSL/TLS Protocols for Each Component
Configure the https.protocols system property on a per-component level by using the .vmoptions
files in the bin directory of your DevTest installation.
For example, to make TLS 1.1 and 1.2 the enabled SSL/TLS protocols for the Virtual Service
Environment, add the following line to the bin/VirtualServiceEnvironment.vmoptions file:
-Dhttps.protocols=TLSv1.1,TLSv1.2
1489/2016
This command prompts you for information about the certificate and for passwords to protect
both the keystore and the keys within it.
4. Complete the following prompts.
Enter the keystore password:
The password is case-sensitive. The text of your password does not display.
Re-enter new password:
The password is case-sensitive. The text of your password does not display.
What is your first and last name?
[Unknown]:
Enter the same machine name that is used in the registry name. Normally, this is the
unqualified host name of the server. For example, for a machine named jetty.eclipse.org,
you would enter jetty.eclipse.org.
However, it is possible to start the registry with the -m command line parameter, using an
IP address or a fully qualified host name. In these cases, the host name in the SSL
certificate must match to prevent certificate errors in the web browser.
22-Jul-2016
1490/2016
Note: webserver.ks is the default file specified in the properties files. If you want to
use a different file name, be sure to update the keystore location properties in the
next section.
Note: The first time the system reads a password, it converts the password to an encrypted
value.
22-Jul-2016
1491/2016
2.
dradis.webserver.ssl.keystore.location
The default value is {{LISA_HOME}}webserver.ks. Change the value if you want to use a
keystore file with a different name or in a different directory.
dradis.webserver.ssl.keystore.password
Set the value to the password that you defined when generating the keystore file.
dradis.webserver.ssl.keymanager.password
Set the value to the key manager password that you defined when generating the
keystore file. Unless you specified a different password, this password is the same as the
keystore password.
3. Uncomment and configure the following properties:
lisa.webserver.https.enabled
The default value is true. Do not change the value.
lisa.webserver.ssl.keystore.location
The default value is {{LISA_HOME}}webserver.ks. Change the value if you want to use a
keystore file with a different name or in a different directory.
lisa.webserver.ssl.keystore.password
Set the value to the password that you defined when generating the keystore file.
lisa.webserver.ssl.keymanager.password
Set the value to the key manager password that you defined when generating the
keystore file. Unless you specified a different password, this password is the same as the
keystore password.
lisa.portal.url.prefix
Set the value to https://.
4. Save the local.properties file.
5. Make a copy of the _phoenix.properties file and save it as phoenix.properties.
6. Uncomment and configure the following properties:
registry.https.enabled
The default value is true. Do not change the value.
phoenix.https.enabled
The default value is true. Do not change the value.
phoenix.ssl.keystore
The default value is {{LISA_HOME}}webserver.ks. Change the value if you want to use a
keystore file with a different name or in a different directory.
phoenix.ssl.keystore.password
Set the value to the password that you defined when generating the keystore file.
22-Jul-2016
1492/2016
phoenix.ssl.keymanager.password
Set the value to the key manager password that you defined when generating the
keystore file. Unless you specified a different password, this password is the same as the
keystore password.
7. Save the phoenix.properties file.
8. Restart the registry.
22-Jul-2016
1493/2016
[realms]
EXAMPLE.COM={
kdc=kdc.fakedomain.com:60088
}
[domain_realm]
.example.com=EXAMPLE.COM
example.com=EXAMPLE.COM
[login]
krb4_convert=true
22-Jul-2016
1494/2016
By default, only the Super User and the System Administrator have administrative access to the ACL
system.
ACL Administration
The ACL Administrator is responsible for the following activities:
Creating users in the ACL system.
Assigning roles to users, based on the responsibilities and required access of each user.
Restricting access to various parts of DevTest by assigning components to Resource Groups.
Assigning user access to defined resource groups.
The Administrator must have a thorough understanding of the various ACL roles and their associated
privileges to assign the appropriate roles to each user.
Important! Do not use the default Super User or the System Administrator users to manage the
ACL system. Use the default Super User to create new users with identical roles to the default
Super User and System Administrator. Use the new users for managing the ACL system, and
change the passwords for the default Super User and System Administrator users to prevent
unauthorized access.
Using the Lightweight Directory Access Protocol (LDAP) with DevTest Solutions
You can also choose to manage the passwords for DevTest through LDAP, especially if an LDAP or
Active Directory system is already available. When you use LDAP, user password changes are made
by the LDAP administrator. The ACL administrator is no longer able to perform password changes.
Important! The implementation of the ACL system, and any integration with an LDAP service,
remain the responsibility of the customer. If you need assistance with these implementation
activities, contact CA Services. User administration through ACL is the responsibility of the ACL or
LDAP administrator. CA Support is unable to progress cases where view access to the roles table
is not available.
For example, a customer that reports a problem staging a test due to permission issues must ensure
that the ACL or LDAP administrator is available when engaging CA support. ACL administrators must
take these factors into account when assigning roles to their users and groups.
22-Jul-2016
1495/2016
Authentication
You can determine how DevTestauthenticates users. You can manually add users (see page 1507) to
the ACL database and specify credentials. The credentials are the user ID and password with which
the user can log in to the DevTest user interface or command-line interface. Or, if your users are
already defined with credentials in an LDAP database, you can use the LDAP server for
authentication. In this case, you perform the steps in Configure Authentication Providers for ACL (see
page 1513).
Authorization
DevTest limits what features individual users can access based on their business role. DevTest is
installed with over a dozen standard roles. You can experience how users with different roles
experience DevTest by logging on as a standard user. Standard users (see page 1505) are assigned
unique standard roles (see page 1498).
Important! To ensure security, the ACL administrator should change the default password for
(admin, guest) as soon as possible to a password they will not forget.
When you manually add users to the ACL database, you assign a role to each user. The role grants a
set of permissions. It is possible to assign multiple roles, but is rarely necessary as roles with more
responsibility include permissions from lower related roles. When you use LDAP, the ACL is
automatically populated with a row for each user. In this case, you assign only roles as described in
authorize users who LDAP authenticates.
The following activities are examples of the activities that you can control with permissions:
Create a test case
Create a staging document
Stage a test case
User Sessions
When an authorized user logs in to a DevTest UI or CLI, a user session is created. User sessions are
audited and form the basis of Usage Audit Reports. These reports include metrics and statistics on
maximum concurrent user sessions by user type, where user types (see page 1477) are categories that
include multiple roles.
ACL and Backward Compatibility for CLIs and APIs That Ran Without Credentials
To access any DevTest user interface or command-line interface, users must log in with a valid user
name and password. The requirement for credentials also applies to running tests and starting virtual
services. If test cases that you automated in a previous release execute without credentials, you can
temporarily override ACL so that they can continue to execute as scheduled. See ACL and CommandLine Tools or APIs (see page 1497).
22-Jul-2016
1496/2016
ACL Database
The ACL data is stored in the default internal Derby database after the installation. As outlined in
Installing, the Derby database should be replaced with an enterprise database. For more information,
see Database Administration (see page 1452).
5. Save local.properties.
Your command-line program runs as _runtime_<username> where <username> comes
from the user.name system property.
To enforce ACL without exceptions, follow these steps:
1. Log on to the DevTest Server containing the in-use registry.
2. Navigate to the installation directory.
3. Open the local.properties file for edit.
4. Comment out the following parameter or set it to false.
lisa.acl.use.runtime=
5. Save local.properties
All UIs and CLIs run with valid login credentials.
Permission Types
Permissions can be divided into the following types:
Boolean (see page 1498)
Numeric Limit (see page 1498)
22-Jul-2016
1497/2016
Boolean
Most of the permissions are Boolean. These permissions indicate whether an activity is allowed or
not allowed.
For example, the Stop Registry permission indicates whether a user can stop the registry.
Numeric Limit
A permission can represent a numeric limit.
For example, the Stage Test permission allows a user to stage a test case with the specified maximum
number of virtual users.
The value of a numeric limit permission must be -1, 0, or a positive integer.
If the value is -1, the permission is allowed and there is no numeric limit.
If the value is 0, the permission is denied.
22-Jul-2016
1498/2016
Standard Permissions
A permission controls whether a user can perform a specific activity.
If a parent permission is allowed, then all its child permissions are allowed.
The following top-level permissions are automatically created.
User and Role Administration Permission (see page 1499)
Resource Administration Permission (see page 1499)
Test/Suite Administration Permission (see page 1499)
Virtual Services Administration Permission (see page 1500)
DevTest Server Administration Permission (see page 1501)
CVS Administration Permission (see page 1502)
Report Administration Permission (see page 1502)
Metric/Event Administration (see page 1503)
CAI Administration Permission (see page 1503)
DevTest Workstation Permission (see page 1504)
22-Jul-2016
Child
Permission
Type
Description
Stage Test
Numeric
Limit
Allows a user to stage a test case with the specified maximum number of
virtual users.
1499/2016
Numeric
Limit
Stop Test
Boolean
Kill Test
Boolean
View Test
Boolean
Quick Stage
Test
Boolean
Stage Local
Suite
Boolean
Ty Description
pe
View VSE
Dashboard
VSE Server
Administrat
ion
Bo
ole
an
Configure VSE
Tracking Data
Cleanup
Monitor VSE
Server
VSE Service
Administrat
ion
22-Jul-2016
Bo
ole
an
VSE Service
Deployment
VSE Service
Archive Retrieval
1500/2016
Bo
ole
an
Start VSE
Service
Stop VSE
Service
Update Deployed
VSE Service
Bo
ole
an
Update Virtual Bo Allows a user to update the concurrent capacity
Service
ole for a deployed virtual service.
Capacity
an
Update Virtual Bo Allows a user to update the think time scale for
Service Think
ole a deployed virtual service.
Scale
an
Update Virtual Bo Allows a user to update the auto-restart option
Service Autoole for a deployed virtual service.
Restart
an
Update Virtual Bo Allows a user to update the group tag on a
Service Group ole deployed virtual service
Tag
an
Set Virtual
Service Execution
Mode
Reset Virtual
Service
Transaction
Counts
Heal Virtual
Service Image
22-Jul-2016
Child
Permission
Type Description
Debug
DevTest
Server
Bool Allows a user to create heap dumps, create thread dumps, and perform
ean garbage collection for a server component.
Monitor
Registry
1501/2016
Reset
Coordinator
Stop
Coordinator
Monitor
Simulator
Reset
Simulator
Stop
Simulator
Type Description
Deploy or re deploy
monitor to CVS
Delete monitor from CVS Boole Allows a user to delete CVS monitors.
an
Run monitor immediately Boole Allows a user to run CVS monitors immediately, regardless of when
on CVS
an they are scheduled to run.
Activate/Deactivate
monitor on CVS
22-Jul-2016
Child Permission
Type Description
1502/2016
Boolea Allows a user to view his or her own report data as a PDF
n
file.
Export Excel report data of other Boolea Allows a user to export report data of other users as an
users
n
Excel file.
Metric/Event Administration
The Metric/Event Administration permission has the following child permissions.
Child Permission
Type
Description
Type Description
View Paths
Create Baselines
Boole Allows a user to create virtual service models and raw traffic files in
an
DevTest Portal.
Extract Data
View Cases
Edit Cases
View Agents
Agent Administration
Boole Allows a user to stop and start dispatching for an agent in DevTest
an
Portal.
Import Paths
22-Jul-2016
1503/2016
Delete Paths
Create Document
View Documented
Transactions
Create Documented
Transactions
View Defects
Type Description
Edit a Configuration
Create a New
Configuration
22-Jul-2016
View a Suite
Edit a Suite
1504/2016
Edit Virtual Service Model Boole Allows a user to edit virtual service models.
an
Create a New Virtual
Service Model
View Virtual Service Image Boole Allows a user to view service images.
an
Edit Virtual Service Image Boole Allows a user to edit service images.
an
Create a New Virtual
Service Image
Execute ITR
Boole Allows a user to view the Properties tab in the Interactive Test Run
an
utility.
Boole Allows a user to view the Test Events tab in the Interactive Test
an
Run utility.
Standard Users
When you start the registry for the first time, standard users are created. Each standard user is
assigned a role within a user type, and default password. See Standard User Types and Standard Roles
(see page 1498) for permissions that are associated with each role.
Important! To help prevent unauthorized access, we recommend that you change the
default passwords for these users as soon as possible.
admin
22-Jul-2016
1505/2016
1506/2016
6.
22-Jul-2016
c.
1507/2016
c. DevTest uses the role that you specify to authorize the user to perform various
activities that are based on the granted permissions.
3. Verify that you have satisfactorily configured all your users with the appropriate roles. If you
customized existing roles or added new ones, verify the configuration.
4. Back up your database strategically according to your in-house maintenance policies. This is a
precaution that enables you to recover your configuration of users and roles quickly if there is
database corruption. The resolution to a corrupted ACL database is to perform a Restore that
should be managed by your database administrator.
More Information:
Manage Users (see page 1508)
Add and Update Roles (see page 1510)
User Activity Report (see page 1512)
Manage Users
You use DevTest Portal to add users, change the details for a user, copy a user, and delete users. The
details that you can change include the password.
User IDs and passwords differ regarding case-sensitivity.
User IDs are not case-sensitive. For example, the user IDs AAAA1 and aaaa1 are treated as the
same value.
Passwords are case-sensitive.
You cannot delete the user that you are currently logged in as.
You can show or hide any of the columns on the Users tab. Click the drop-down arrow in a column.
Select Hide Column to hide the column. To show a hidden column, select the Filter icon and click the
name of the hidden column.
To add a user:
1. In DevTest Portal, click Settings, Access Control, Users.
2. Click Add User. The Add New User dialog appears.
3. In the User ID field, enter a unique ID for the user.
You can enter any combination of alphanumeric, hyphen (-), underscore (_), period (.), and
ampersand (@) characters. The maximum number of characters is 100.
22-Jul-2016
4.
1508/2016
1509/2016
The All Effective User Types field identifies all the user types that this role
consumes. For example, there is at least one permission from each of the identified
user types assigned to the role.
5. From the Permissions tab, select a permission or permissions by highlighting the permission's
row.
6. Click the arrow between the columns to move a permission from the Available column to the
Assigned column.
To filter the lists of permissions, type in the Type your filter field at the top of the column.
22-Jul-2016
1510/2016
7. Click Save.
8. Use the same process on the Users and Resource Groups tabs to add users and resource
groups to a role.
Roles tab
To update a role:
1. In DevTest Portal, click Settings, Access Control, Roles.
2. Select a role from the list on the left.
3. On the Permissions tab, select a permission and select the Expand icon to see its child
permissions.
4. To update a Boolean (see page 1497) permission, select or clear the check box.
5. To update a numeric limit (see page 1497) permission:
a. Click Numeric Limits.
b. Enter a value in the numeric limit.
c. Click Save.
6. To assign a user type to a role quickly, click the Quick Selection button and select a user type
from the drop-down.
7. Click Save.
22-Jul-2016
1511/2016
7.
DevTest Solutions - 9.5
To delete a role:
1. In the Roles tab, select the role name and select the check box on the left for as many roles as
you are deleting.
2. Click Delete Role(s).
3. Click Yes.
More Information:
Testing Reports (see page 377)
Virtual Service Metrics Reports (see page 803)
22-Jul-2016
1512/2016
The following options let you assign basic information to the new user:
Use the -d or --adduser option to assign a user ID to the new user.
Use the -w or --addpassword option to assign a password to the new user.
(Optional) Use the -r or --rolename option to assign a role to the new user. If you do not assign a
role, the user has no permissions until a role is assigned.
The following options let you specify your credentials:
Use the -u or --username option to specify your user ID.
Use the -p or --password option to specify your password.
If the registry is on a remote computer, use the -m or --registry option to specify the registry URL.
Example
This example adds a user who is named user1. Because the role name has more than one word,
quotation marks are used.
adduser-duser1-wpassword1-r"LoadTester"-uadmin-pmyadminpassword
Note: To use this LDAP integration, you cannot have DevTest Workstations older than 8.4.
For example, if you upgrade the registry to 8.4, and you then leverage LDAP integration, all
the DevTest Workstations under that registry must also be upgraded to 8.4.
22-Jul-2016
1513/2016
2. Authentication providers that are listed in this file are tried in the order they appear in the
file. Enter as many authentication providers as you need, in the order they should be used.
3. Complete the following fields for each authentication provider:
name
The label for this authentication provider.
Required
type
The type of authentication provider.
Required
Values: LDAP, ActiveDirectory, Embedded, Custom, or Legacy. These values are case-sensitive and
Legacy is deprecated and will be removed in a future release.
The <authentication-provider> element has two required attributes of name and type. The name
attribute provides a user-defined name that is associated with the respective authentication
provider that is used in the UI and in error reporting. The type attribute determines the category
of the authentication provider and how it is constructed
ActiveDirectory or LDAP
When the type is defined with ActiveDirectory or LDAP then an internal
AuthenticationProviderFactory is used to create an authentication provider that is used for
looking up users in the Microsoft Active Directory server or a normal LDAP server.
All attributes are valid except for factory-class.
Example:
<authentication-provider
name="Corp. Active Directory Server"
autoAddUsers="false"
authenticateOnly="false"
enabled="true"
type="ActiveDirectory"
defaultRole="SV Power"
rejectUnmappedUsers="true>
<url>ldaps://server.example.com:3269</url>
<user-dn>cn=readOnlyUser,ou=users,dc=example,dc=com</user-dn>
<user-password>drowssap</user-password>
<user-dn-pattern>cn={0},ou=users,dc=example,dc=com</user-dn-pattern>
<user-search-base>dc=example,dc=com</user-search-base>
<user-search-filter>(objectClass=user)</user-search-filter>
<group-search-base>ou=groups</group-search-base>
<group-search-filter>(member={0})</group-search-filter>
</authentication-provider>
22-Jul-2016
1514/2016
<authentication-provider
name="DevTest ACL Database"
type="Embedded"
enabled="true"/>
Legacy
A type attribute value of Legacy creates an authentication provider that is based off the older and
now deprecated com.itko.lisa.acl.IAuthenticationModule interface. Users of the
IAuthenticationModule who are using it to access the internal DevTest database or an external
LDAP/Active Directory server can switch to using the direct type replacements of Embedded and
LDAP/ActiveDirectory. Any other implementations should be re-implemented as Custom
authentication providers.
Only name, type, enabled, and defaultRole are valid attributes.
<authentication-provider
name="ITKO Authentication Module"
type="Legacy"
enabled="true"
defaultRole="Guest"/>
Custom
A value of Custom for the type attribute allows you to create your own
DevTestAuthenticationProvider instance. When the value of the type attribute is Custom, then
you must also define the factory-class attribute and the value of the factory-class attribute must
be the fully qualified name of a Java class that implements the com.ca.dts.security.authentication.
AuthenticationProviderFactory interface.
Only name, type, enabled, defaultRole, and factory-class are valid attributes. Any subelements
like <property1>value1</property1> are passed to the instantiated factory-class as properties
with the element name (property1) being the key and the text of the element (value1) as the
value.
Example:
<authentication-provider
name="My Authentication Provider"
type="Custom"
enabled="true"
defaultRole="Guest"
factory-class="com.example.FooAuthenticationProviderFactory">
<property1>value1</property1>
<property2>value2</property2>
</authentication-provider>
enabled
Controls whether this authentication provider is available for authenticating users.
Values: true, false
Default: true
autoAddUsers
Controls whether successfully authenticated users are automatically added to the database.
When this field has the value of false, you must explicitly create accounts in for your LDAP users.
If you enable this field, you must manually remove users from the DevTest database as users are
22-Jul-2016
1515/2016
22-Jul-2016
1516/2016
Note: If you use Microsoft Active Directory as your LDAP server, use the Global Catalog
port number in the LDAP configuration. The Global Catalog port number is 3268 by default,
or 3269 by default if using SSL. You may need to contact your system administrator to
determine the correct port number to use.
More Information:
For information about adding LDAP users to the database, see Authorize Users Authenticated by
LDAP (see page 1517).
1517/2016
In the example, members of the Team - Forward Cars - QA2 - Team Only distinguished name group
are given the role of Super User, and members of Team - Forward Cars - All are given the role of
User. If a user was a member of both groups, both roles and the permissions for each role are
assigned.
To update the DevTest Users table by making individual role assignments
1. Ask all DevTest users to log in to DevTest Solutions and then log out.
2. Browse to the DevTest Portal and log in.
3. Click Settings, Access Control, Users.
The DevTest Users table opens.
4. For each user, clear the default role and select the appropriate role.
5. (Optional) To view permissions for a role in the right pane of the User Profile dialog, click the
icon to the right of the role name.
6. Click Save.
22-Jul-2016
1518/2016
Authenticate with LDAP/AD and manage user roles with mapped LDAP groups and reject unmapped
users
<authentication-provider
name="Corp. Active Directory Server"
autoAddUsers="false"
authenticateOnly=false"
enabled="true"
type="ActiveDirectory"
defaultRole="SV Power"
rejectUnmappedUsers=true">
<url>ldaps://server.example.com:3269</url>
<user-dn>cn=readOnlyUser,ou=users,dc=example,dc=com</user-dn>
<user-password>drowssap</user-password>
<user-dn-pattern>cn={0},ou=users,dc=example,dc=com</user-dn-pattern>
<user-search-base>dc=example,dc=com</user-search-base>
<user-search-filter>(objectClass=user)</user-search-filter>
<group-search-base>ou=groups</group-search-base>
<group-search-filter>(member={0})</group-search-filter>
</authentication-provider>
Authenticate with LDAP/AD and manage user roles with mapped LDAP groups and allow unmapped
users to be assigned a default role
<authentication-provider
name="Corp. Active Directory Server"
autoAddUsers="false"
authenticateOnly=false"
enabled="true"
type="ActiveDirectory"
defaultRole="SV Power"
rejectUnmappedUsers=false">
<url>ldaps://server.example.com:3269</url>
<user-dn>cn=readOnlyUser,ou=users,dc=example,dc=com</user-dn>
22-Jul-2016
1519/2016
Resource Groups
Resource groups are one or more DevTest Servers or VSEs. Define resource groups to determine the
resources that a user or a project can access.
When using ACL, associate roles with resource groups to determine which roles can act on which
resources.
Tip: If you have a small environment, such as a site that has a local registry and a VSE, you
do need to set up resource groups to control access such as restricting VSE specific access.
However, you may want to set up Resource Groups to limit the access between your
Production and your Development group.
1520/2016
22-Jul-2016
1521/2016
Note: The resource group association is only in effect when the configuration is the active
configuration.
Resources
Resources are coordinators, servers, and VSEs.
Manage Resources
Use the DevTest Portal to delete disconnected resources and modify the assignment of resource
groups for a selected resource.
You can show or hide any of the columns on the Resources tab. Click the drop-down arrow in a
column. Select Hide Column to hide the column. To show a hidden column, select the Filter icon and
click the name of the hidden column.
To delete a resource or resources:
You can only delete resources that are disconnected.
1. In the DevTest Portal, click Settings, Access Control, Resources.
2. In the Action column for the resource, click the Delete icon.
3. From the drop-down list, select Delete Resource.
4. Click Delete in the Please Confirm dialog.
5. To delete multiple resources, select the check box to the left of the resources you are deleting
22-Jul-2016
1522/2016
Logging
This section contains the following pages that provide details about logging in DevTest:
Logging Properties File (see page 1525)
Status Messages for Server Components (see page 1526)
Automatic Thread Dumps (see page 1526)
Test Step Logger (see page 1527)
VSE Logging (see page 1528)
22-Jul-2016
1523/2016
Note: Although lisa.tmpdir allows you to change the location of where you can store your
temporary files, we do not recommend that you change this property to save the temporary files
out to an external mount point or external share. If you encounter issues with product instability,
and you are using an external share for temp file storage, Support might instruct you to go back
to using a local disk for temp file storage for continued support of your environment.
22-Jul-2016
1524/2016
The logging.properties file contains a set of loggers for third-party components that are included in
DevTest. The default log levels for these loggers are intended to prevent the third-party components
from flooding the log files with too many messages. You typically do not need to change the log
levels.
log4j.logger.com.teamdev=WARN
log4j.logger.EventLogger=WARN
...
To perform log rotation by date or time, use the DailyRollingFileAppender. For more information,
see the log4j documentation (https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j
/DailyRollingFileAppender.html).
log4j.appender.A1=
org.apache.log4j.DailyRollingFileAppender
log4j.
appender.A1.File
=${lisa.tmpdir}/${LISA_LOG}
log4j.appender.A1.Append=true
log4j.appender.A1.DatePattern='.
'
yyyy-MM-dd
The backup files are placed in the same directory as the log file. For example, if the log file for the
registry has been backed up three times, the directory contains the following files:
registry.log
registry.log.1
registry.log.2
registry.log.3
22-Jul-2016
1525/2016
The date uses Coordinated Universal Time (UTC). This convention makes it easier to follow log events
when the registry is running in a different time zone than DevTest Workstation.
For information about the thread dump properties, see Automatic Thread Dumps (see page 1526).
The default interval of the status messages is 30 seconds. You can change the interval by editing the
following properties in the lisa.properties file:
lisa.defaultRegistry.pulseInterval
lisa.coordinator.pulseInterval
lisa.simulator.pulseInterval
lisa.vse.pulseInterval
22-Jul-2016
1526/2016
You can change the setting from WARN to 1 for more granular logging without generating a
dump
The values of the File, MaxFileSize, and MaxBackupIndex properties can be different from the values
that are shown in the preceding example.
Note: After you add the properties, restart DevTest Workstation (if currently running).
The resulting message in the log file is similar to the following example:
2012-07-1117:32:59,390[basic-test/basic-test[QuickStageRun]/0]DEBUGcom.itko.lisa.
test.StepLogger-
LOGbasic-test,basic-test[QuickStageRun],local,0,3,mylogmessage
22-Jul-2016
1527/2016
The cycle number. This number applies to situations in which the staging document is configured
to run the test over and over until some condition occurs. The value is the number of times this
particular vuser executed the test.
The log message that is set in the test step.
VSE Logging
VSE_Matches File
DevTest generates a log file with the services matches into a file named VSE_matches. You can use
this log file to debug errors at the request-response level. It is located in the lisatmp directory. It
contains the matching characteristics for the request being processed.
VSE.log File
The VSE.log file contains the errors found when matching requests and responses.
Monitoring
You can monitor DevTest Solutions by using the DevTest Portal, the Service Manager command-line
utility, the Registry Monitor, or the Enterprise Dashboard.
This section contains the following pages :
Use DevTest Portal (see page 1528)
Use the ServiceManager (see page 1531)
Use the Registry Monitor (see page 1534)
Use the Enterprise Dashboard (see page 1536)
22-Jul-2016
1528/2016
22-Jul-2016
1529/2016
22-Jul-2016
1530/2016
Performance Mode
(for VSEs) Displays either Enabled or Disabled, to indicate whether the VSE is in performance
mode (see page 674).
22-Jul-2016
1531/2016
-s service-name, --status=service-name
Displays a status message about the service. Entering all for the service-name returns status
messages about all registered services.
-r service-name, --reset=service-name
Keeps the service in memory but refreshes its state.
-o service-name, --stop=service-name
Instructs the service to end.
-i valid-remote-init-service-name, --initialize=valid-remote-init-service-name
Remotely initializes a service.
-t service-name, --threaddump=service-name
Instructs the service to generate a thread dump (stack trace) for diagnostics.
-b simulator-name, --attached=simulator-name
Instructs simulator-name to return a list of attached mobile devices.
-e service-name, --heapdump=service-name
Instructs the service to create an .hprof file for memory diagnostics.
-g service-name, --gc=service-name
Instructs the service to force a Java garbage collection.
-d service-name, --diagnostic=service-name
Creates a zip file that contains diagnostic files for the service. If the service is a registry, then the
zip file also contains diagnostic files for all connected coordinators, simulators, and VSE servers.
Typically, you use this option when requested to do so by Support.
loglevel
This option also includes an optional, secondary parameter that is named loglevel, followed by
one of the following loglevel keywords: error, warn, info, debug, trace.
For example, ServiceManager -d tcp://10.1.1.23:2010/Registry loglevel debug sets the log level
of all components, including agents, to the debug level. Service Manager then writes the
following message:
Log levels set to debug. Run your repro steps, then press return to restore log levels and capture
diagnostic.
The generated zip file contains debug log level logs for all connected components and thread
dumps and license information and properties. This zip file also contains the logs for any agents
that are connected to the registry broker.
Note: If the -d command is sent to a VSE, coordinator, or simulator server, only the logs
and diagnostics for that component are included in the zip.Agents do not have a trace log
level, but the dev log level is similar and treated as such.
-u username, --username=username
Use this command to specify your user name.
-p password, --password=password
Use this command to specify your password.
22-Jul-2016
1532/2016
--version
Print the version number.
-m registry-name, --registry-name=registry-name
Used with initialize to specify a registry to which to attach.
-n component-name, --component-name=registry-name
Used with initialize to specify a component name.
-l lab-name, --lab-name=lab-name
Used with initialize to specify a lab name to create.
-a app-name, --app=app-name
Used with initialize to specify a server appID.
Example:
If you have a simulator that you want to name MySim and you want to attach it to MyRegistry and
start a new lab that is named MyDevLab, enter:
./SimulatorService-nMySim-mtcp://1.2.3.4:2010/MyRegistry-lMyDevLab
The following example generates a thread dump for the VSE server.
ServiceManager--threaddump=tcp://remote.host.com:2013/VSE
<abunchofstacktraces>
22-Jul-2016
1533/2016
The following example generates a zip file that contains trace level logs for all components that are
connected to the registry.
ServiceManager--diagnostic=RegistryloglevelTRACE
The following example generates a zip file that contains debug level logs for the simulator.
ServiceManager-dSimulatorlogleveldebug
22-Jul-2016
1534/2016
To reset this service (stop and clear current activities), click Reset
22-Jul-2016
1535/2016
Running Registries
Display Name
The Display Name is a name that you assign when you configure the registry.
Name
The URL of the registry.
22-Jul-2016
1536/2016
Note: To view agents, you must start broker.exe (see page 1334).
DevTest Console URL
The address of the landing page for DevTest Console, which provides links to DevTest Portal.
To display information about the database that the Enterprise Dashboard uses, hover over the
database icon
in the upper right corner of the panel. The popup window displays the database URL, database type,
database version, driver name, driver version, and user.
Note: This window only displays data for registries running version 7.5 or later.
22-Jul-2016
1537/2016
If the Enterprise Dashboard has been idle for some time, click Refresh
each panel.
The bottom part of the window shows metrics for registries, VSE servers, coordinators, and
simulators.
The Registry Metrics area of the panel shows the maximum number of workstations, simulators,
coordinators, agents, and VSEs concurrently running in the designated time period.
The VSE Metrics area of the panel shows the number of transactions and the number of labs that
were deployed for each VSE active during the designated time period.
The Coordinator Metrics area of the panel shows the number of tests that were started for each
coordinator during the designated time period.
If you run a test suite and the Enterprise Dashboard "tests started" count is not what you expect, see
the suite results section of DevTest Workstation. Check the results for each failed test. If any tests
failed to stage, the tests started count does not include them.
The Simulator Metrics area of the panel shows the maximum number of virtual users active during
the designated time period.
To return to the main window, click Home in the breadcrumbs in the top left corner of the page.
Enterprise Dashboard may sporadically display inadvertent stop and restart of components
as network connectivity is lost between the registry and its underlying components. When
a registry loses connectivity to an underlying component for a period of time, it is assumed
that the component has shut down, so an End Event is generated and submitted to
Enterprise Dashboard for that component.
22-Jul-2016
1538/2016
You can use this information to have a real-time picture of your peak concurrent user and VSE count
for a designated time period, to help you monitor your compliance with the terms of your license
agreement (see page 1467).
Use the filter at the upper right corner of the Peak Counts pane to designate the time period to
display the peak user and VSE counts.
The Registry pane displays all registries that this Enterprise Dashboard controls, with information
about each. Use the filter drop-down at the upper right of the Registry pane to control the time
frame to display related registries.
Example
The following graphic shows the CAI Power User peak user counts from the Top Instances window of
the Enterprise Dashboard.
During the time period that is specified, from 7:00 AM on April 25 to 7:00 AM on May 9, there was a
maximum of two concurrent users. There are 11 rows, indicating that there were 11 instances where
two CAI users were being consumed. If you click on the number 2, you see the User Count Usage
Details window. This window shows information about each of the two user sessions: the user, the
hostname of the client application, their registry, login and logout times, and the application they
were logged in to.
22-Jul-2016
1539/2016
The timeframe that is shown on this window is the timeframe that reflects the concurrency; that is, in
this example, when two users were logged in simultaneously. Essentially, this timeframe is the time
period from the time that the concurrency started to when the concurrency ended. In the User Count
Usage Details pane that is shown below, the concurrency happened on April 26. The first moment
that two users were both logged in was 7:06:27, when the second user logged in. Both users were
logged in until the first user logged out at 7:57:23.
The User Count Usage Details window displays all the usage activity that makes up the concurrent
count from the Top Instances of User Counts from the previous page. The only entries that display
are those that comprise the peak user count. Other logins and user activity during this period are not
detailed on this page.
22-Jul-2016
1540/2016
d. Update the following line if the URL changed from HTTP to HTTPS or from HTTPS to
HTTP.
devtest.enterprisedashboard.https.enabled=false|true
1541/2016
Maintain Registries
The registry gets a license from the Enterprise Dashboard and stores and forwards its use counts to
the dashboard.
Maintaining registries involves the following procedure:
Add the registry of a DevTest Server and then validate the registry.
To add a registry (DevTest 7.5.x through 9.0.x):
1. Navigate to the LISA_HOME directory of a newly installed DevTest Server.
2. Copy _site.properties and rename the copy to site.properties.
3. Open site.properties for edit. Locate Section 1 - Enterprise Dashboard.
4. Uncomment the following line and substitute localhost or the valid hostname for somehost.
Use the hostname for the CIC Enterprise Dashboard bridge.
For 8.x and later:
lisa.enterprisedashboard.service.url=tcp://somehost:2003/EnterpriseDashboard
For 7.5.x:
lisa.enterprisedashboard.url=tcp://somehost:2003/EnterpriseDashboard
22-Jul-2016
1542/2016
22-Jul-2016
1543/2016
2.
DevTest Solutions - 9.5
Note: This option only applies to historical data. For a live data export, the status
of each registry is automatically determined.
3. You are prompted to either save or open the exported Excel file.
4. Click one of the following:
Click Save to save your exported file to a specified directory.
Click Open to view the exported file.
5. Click OK.
2. Click the gear icon and select Export Usage Audit Data.
The Export Usage Audit Data dialog opens.
22-Jul-2016
3.
1544/2016
3. To select a start date and and end date for the date range on which to report, click the
calendar icons, then click OK.
The generated report from the specified date range is downloaded to the bottom left of the
window.
4. Click the DevTestSolutionsUsageAuditReport.xlsx to open the Excel book containing your
report.
See DevTest Solutions Usage Audit Report (see page 1471) for details on each tab.
22-Jul-2016
1545/2016
Reference
This section provides detailed descriptions of elements that are commonly used in DevTest Solutions.
This section also provides an overview of the REST Invoke API. The overview includes a link to the full
API documentation.
Assertion Descriptions (see page 1546)
Asset Descriptions (see page 1587)
Companion Descriptions (see page 1610)
Correlation Schemes (see page 1632)
Data Set Descriptions (see page 1635)
Event Descriptions (see page 1658)
Filter Descriptions (see page 1664)
Metrics Descriptions (see page 1705)
Property Descriptions (see page 1716)
REST Invoke API (see page 1780)
Test Step Descriptions (see page 1785)
Assertion Descriptions
An assertion is an element that runs after a step and all its filters have run.
This section describes the following assertions:
HTTP Assertions (see page 1546)
Database Assertions (see page 1553)
XML Assertions (see page 1554)
JSON Assertions (see page 1565)
Virtual Service Environment Assertion (see page 1569)
Other Assertions (see page 1570)
Mobile Testing Assertions (see page 1583)
Regular expressions are used for comparison purposes in many assertions. For more information
about regular expressions, see Regular Expressions (http://psoug.org/reference/regexp.html).
HTTP Assertions
The following assertions are available in the HTTP assertions list for any test step:
Highlight HTML Content for Comparison (see page 1547)
Check HTML for Properties in Page (see page 1549)
Ensure HTTP Header Contains Expression (see page 1551)
Check HTTP Response Code (see page 1551)
Simple Web Assertion (see page 1552)
22-Jul-2016
1546/2016
22-Jul-2016
1547/2016
This screen shows the HTML that is rendered in a browser in the top panel, and the actual HTML text
in the bottom panel. We want to make the phrases "Welcome to" and "examples" required. We have
set the boundaries around those phrases, and clicked the Must
company name text, "ITKO", inside the highlighted content, and clicked the Property
icon. We
entered the property name correctCompany into the dialog. This property is compared to the text
that appears between the two bounding phrases. The company name text has been replaced with
the name of the property.
To execute an assertion, click Run Assertion.
When this assertion is run, the value of the property correctCompany is inserted between the
phrases "Welcome to" and "examples". The resulting phrase is compared to the corresponding
phrase in the HTML response. The phrase "Welcome to correctCompany examples" can change its
location in the HTML and it is still found.
22-Jul-2016
1548/2016
22-Jul-2016
1549/2016
Check HTML for Properties in Page window listing some properties referenced in page
22-Jul-2016
1550/2016
Note: You may be prompted to install the Parse HTML for Tag filter.
22-Jul-2016
1551/2016
Log
Identifies event text to print if the assertion fires.
RegExpression
The regular expression that must appear in the response code. For example, to verify that the
HTTP response code is in the 400-499 range, set the RegExpression to 4\d\d.
Click Run Assertion to execute the assertion.
1552/2016
Database Assertions
The following assertions are available in the Database assertions list for any test step:
Ensure Result Set Size (see page 1553)
Ensure Result Set Contains Expression (see page 1554)
1553/2016
XML Assertions
The following assertions are available in the XML assertions list for any test step:
Highlight Text for Comparison (see page 1555)
Ensure Result Contains String (see page 1557)
Ensure Step Response Time (see page 1557)
Graphical XML Side-by-Side Comparison (see page 1558)
22-Jul-2016
1554/2016
22-Jul-2016
1555/2016
Highlight Text Content for Comparison assertion window with Select Property dialog
The set of tokens that is shown in the previous graphic can be read this way:
The buffer must start with the phrase in yellow: "Snapshot of: C:\Lisa\".
A number of files may or may not be in the buffer in the next token. Because the next token is an
"Any" token, the variance is immaterial.
The file "i4jinst.dll" and "rw" attributes must appear.
The red filesize means that the value associated with the property key filesize is swapped into the
expression, and then the comparison made.
The text "06/08/2011" must appear.
The file "install.prop" must appear.
22-Jul-2016
1556/2016
Note: "Must" blocks must always appear on both sides of "Property" blocks.
1557/2016
22-Jul-2016
green arrow.
1558/2016
After a diff is executed, the results appear in the visualizer in the Diff Viewer tab in the assertion
editor.
22-Jul-2016
1559/2016
Then the difference in the first content is displayed, followed by the separator '---', followed by the
difference in the second content.
The + character indicates addition, the - character indicates a deletion, and the ! character indicates a
change. When these characters are present, they indicate that an actual change occurred on the line
of content (instead of to a context line).
22-Jul-2016
1560/2016
Node Types
Ignore element text
Ignore all element text.
Ignore attribute values
Compare attribute names but ignore attribute values.
Ignore attributes
Ignore attribute names and values.
Ignored Nodes
Ignored nodes are created from a list of XPaths that are run against the left and right
documents. Each evaluated XPath that returns a node set is aggregated. When the diff occurs,
any node that is found in the aggregate set is ignored.
Ignored node XPaths can be any arbitrary query that returns a node set. For example, the XPath //*
excludes all nodes in an XML document. /example/text() excludes the first text node child of the
example element in an XML document. /example/@myattr is the XPath to ignore the myattr
attribute, including the attribute text value, belonging to the example element in an XML document.
A right-click menu item also lets a node be selected directly inside an XML document and its XPath is
added to the Ignored Nodes list.
22-Jul-2016
1561/2016
22-Jul-2016
1562/2016
Adding ='NewPassword' (as in the following example) compares the string of the result to the value
of the property that is used to set the new password. If the equality test does not match, the
assertion fails.
string(/env:Envelope/env:Body/ns2:updatePasswordResponse/[name()='return']/[name()
='pwd'])='NewPassword'
This expression checks the web service response, looking for the new password and making sure it
matches as expected.
1563/2016
Validation Tab
You can run the validation by clicking the Run Validation button. Any resulting validation errors are
displayed in the Validation Error List. You can use the Validation Type option buttons to select how
to handle the errors:
No Errors Allowed
The validation fails on any error.
Error Message Expressions
Errors can be marked to be ignored in the validation. If you select this option, you can select the
errors to ignore in the Validation Error List.
Schemas Tab
Enter the information for each schema you want to use in the validation. You can also specify the
22-Jul-2016
1564/2016
JSON Assertions
The following assertions are available in the JSON assertions list for any test step:
Ensure Result Equals (see page 1565)
Ensure Result Contains (see page 1567)
Ensure JSON Schema (see page 1568)
1565/2016
Note: The expected JSON in the right panel is not persistent. If you save, close, and reopen
22-Jul-2016
1566/2016
Secure Prefixes
JSON has a security issue that can be addressed by adding a prefix. The prefix prevents an attacker
from hijacking the JSON.
Before this assertion performs the comparison, it removes any prefixes from the JSON content.
22-Jul-2016
1567/2016
Secure Prefixes
JSON has a security issue that can be addressed by adding a prefix. The prefix prevents an attacker
from hijacking the JSON.
Before this assertion performs the comparison, it removes any prefixes from the JSON content.
From Property: Loads the JSON schema from a property. To refresh the property value, click
Refresh
Payload
Indicates the source of the payload, or JSON text. From the drop-down list, select from:
22-Jul-2016
1568/2016
From Content: Loads the JSON schema from a flat file on your file system. To select the file,
click Browse File Selection.
From URL: Loads the JSON schema from a URL. Enter the URL in the URL Path field. To browse
the file system, click Browse
From Property: Loads the JSON schema from a property. To refresh the property value, click
Refresh
Settings Tab
The Settings tab lets you set advanced options for the Ensure JSON Schema assertion.
Complete the following fields:
Use Subschema
Instructs the application to look for a specific subschema. Enter the subschema in the Subschema
Filter field.
Referencing Mode
Indicates the dereferencing mode to use.
To dereference all resolved URIs, select Canonical. To dereference URIs within the schema, select
Inline.
Default: Canonical
Run Assertion
To run and execute the filter, click Run Assertion.
1569/2016
Other Assertions
The following assertions are available in the Other assertions list for any test step:
Highlight Text Content for Comparison (see page 1570)
Ensure Non-Empty Result Assertion (see page 1573)
Ensure Result Contains String Assertion (see page 1574)
Ensure Result Contains Expression Assertion (see page 1574)
Ensure Property Matches Expression Assertion (see page 1574)
Ensure Step Response Time Assertion (see page 1575)
Scripted Assertion (see page 1575)
Ensure Properties Are Equal Assertion (see page 1577)
Assert on Invocation Exception Assertion (see page 1577)
File Watcher Assertion (see page 1578)
Check Content of Collection Object Assertion (see page 1578)
WS-I Basic Profile 1.1 Assertion (see page 1579)
Messaging VSE Workflow Assertion (see page 1581)
Validate SWIFT Message Assertion (see page 1581)
22-Jul-2016
1570/2016
22-Jul-2016
1571/2016
Highlight Text Content for Comparison assertion window with Select Property dialog
The set of tokens that is shown here can be read this way:
The buffer must start with the phrase in yellow: "Snapshot of: C:\Lisa\".
The number of files in the buffer in the next token can vary. Because the token is an "Any" token,
the variance is immaterial.
The file "i4jinst.dll" and "rw" attributes must appear.
The red filesize means that the value associated with the property key filesize are swapped into
the expression, then the comparison made.
The text "06/08/2011" must appear.
22-Jul-2016
1572/2016
Note: "Must" blocks must always appear on both sides of "Property" blocks.
1573/2016
Note: Use this assertion carefully, because it does not have any content validation.
22-Jul-2016
1574/2016
If
Specifies the behavior of the assertion from the drop-down list.
then
Specifies the step to which to redirect if the assertion fires.
Log
Identifies event text to print if the assertion fires.
Property Key
The name of the property to be checked. Enter the property name, select from the drop-down list
of properties, select an existing string pattern, or create a string pattern.
RegExpression
The regular expression that must appear in the current value of the property.
Click Run Assertion to execute the assertion.
Scripted Assertion
The Scripted Assertion assertion lets you write and run scripts. The result must be a Boolean, or false
is returned.
Complete the following fields:
Name
Defines the name of the assertion.
If
Specifies the behavior of the assertion from the drop-down list.
then
Specifies the step to which to redirect if the assertion fires.
Log
Identifies event text to print if the assertion fires.
Click Run Assertion to execute the assertion.
Language
Designates the scripting language to use.
Values:
22-Jul-2016
1575/2016
Applescript (for OS X)
Beanshell
Freemarker
Groovy
JavaScript
Velocity
Default: Beanshell
To use additional scripting languages, see Enabling Additional Scripting Languages (see page 1451).
Copy properties into scope
Allows you to specify which properties to download for use in the step.
Values:
Test state and system properties: all properties for the test case and system
Test state properties: properties that provide information about the test case
TestExec and logger only: only the TestExec and logger properties
Default: Test state properties
Enter your script into the script editor on the left.
All the objects available for use in the script editor are listed in the Available Objects panel on the
right. The list includes primitive types of data (strings and numbers) and objects such as EJB response
objects that were executed in the test case. Double-click an entry in the Available Objects table to
paste that variable name into the editor area.
Click Test to open a window with the result of the script execution or a description of the errors that
occurred.
When you save the test case, the assertion is checked for syntax errors.
Some things to remember:
If you use a property - {{someprop}} - in a script, it is substituted for the property value at run
time before the script is executed.
If you need access to a property with a "." in the name, such properties are imported into the
script environment replacing "." with "_". So {{foo.bar}} in a script is the same as foo_bar.
You can produce a DevTest log event inside a script step or assertion by using the testExec object.
To produce a DevTest log event, code the following line, as opposed to using the log4j logger. The
testExec.log() method causes an actual DevTest event to be raised. You can see the event in the
ITR.
testExec.log("Gothere");
22-Jul-2016
1576/2016
22-Jul-2016
1577/2016
Expression
The expression to search for in the invocation exception. The expression can be a regular
expression. The expression '.*' is common.
Note: The times are in seconds and must be integers. The times default to 0.
1578/2016
22-Jul-2016
1579/2016
1580/2016
22-Jul-2016
1581/2016
22-Jul-2016
1582/2016
Notes:
Ensure that lines in MT messages end with the required Carriage Return/Line Feed
characters (0D0A in ASCII hex; 0D25 in EBCDIC hex). Otherwise, the following error is
reported.
"TheinputSwiftmessagecannotbeparsedbecauseofinvalidsyntax.Pleas
echeckthemessagestructure.Takenoticeofblockseparators,carriagereturnline-feedcharactersandthepresenceofmandatoryblocks."
Ensure that an MT message has no invalid trailing spaces before the end of a line. The
reported errors are sometimes unclear.
For example, if the following line
:32A:071119EUR50000,
contains an invalid trailing space before the end of the line, DevTest reports the error
message:
"T43-TheintegerpartofRatemustcontainatleastonedigit.Adecimal
commaismandatoryandisincludedinthemaximumlengthtag:32A."
Mobile-Specific Assertions
These assertions are only available for a mobile test step that you edit within the Mobile test step
editor.
The following assertions are available in the Mobile assertions list for any test step:
Ensure Same Mobile Screen (see page 1584)
Ensure Screen Element Matches Expression (see page 1585)
Ensure Screen Element is Removed (see page 1585)
22-Jul-2016
1583/2016
1584/2016
For more information about regular expressions, see Assertion Descriptions (see page 1546).
Complete the following fields:
Expression to Match (Value)
The regular expression to match for the specified screen element.
If no match, execute step
Select a step from the drop-down list to execute if a match is not made.
22-Jul-2016
1585/2016
22-Jul-2016
1586/2016
Enabled
True if the element is enabled.
Selected
True if the element has focus.
Text
Matches the text of the element.
TagName
Matches the tag name of the element.
The two check boxes apply if you use Text or TagName:
Partial Match
Returns a partial match of any Text or TagName you enter.
Ignore Case
Ignores the case of the text or TagName.
Timeout
This field defines a timeout for the full operation. In other words, if the element is found but fails
the predicate, the assertion will retry until the timeout is reached or the predicate succeeds.
Asset Descriptions
An asset is a set of configuration properties that are grouped into a logical unit.
This section describes the following assets:
Email Connection Asset (see page 1587)
IBM MQ Native Assets (see page 1589)
JDBC Connection Assets (see page 1591)
JMS Client Assets (see page 1592)
JNDI Initial Context Asset (see page 1597)
Mobile Assets (see page 1597)
RabbitMQ Assets (see page 1597)
SAP JCo Destination Assets (see page 1602)
SSL Assets (see page 1605)
22-Jul-2016
1587/2016
If you have predefined connection assets, you can select one from the Connection drop-down list in
the step editor. To create an asset from the step editor, click Add Asset
the step editor, click Edit Asset
To create an asset:
1. Define the following fields for this asset. You can use properties for SMTP connection
parameters.
Name
Defines the name of the asset. This name appears in the Connection field in the step
editor. Use a name that is meaningful for your SMTP mail system.
Description
Specifies information that provides more details about the system that the asset targets.
Server
Specifies the name of the SMTP mail server.
Security
Specifies which type of encryption to use to secure a communication channel.
Values:
None: The communication uses no encryption.
SSL/TLS: The communication uses SSL/TLS encryption.
Port
(Optional) Specifies the port on which the SMTP mail server connects.
Defaults:
25: The default when None is specified for Security.
465: The default when SSL/TLS is specified for Security.
Authentication
Specifies whether to use authentication to connect to an email serverl.
Values:
Off: The email server requires no authentication.
Password Authentication: The email server requires user and password
authentication.
User
(Optional) Specifies the user ID that the SMTP mail server uses to authenticate the
connection. This field is disabled when Authentication is Off.
22-Jul-2016
1588/2016
Password
(Optional) Specifies the password that the SMTP mail server validates. This field is disabled
when Authentication is Off.
2. To display the advanced mode, click PRO in the upper right corner of the asset editor. The
advanced mode allows you to specify the runtime scope (see page 453) of the asset.
Note: These assets are for WebSphere MQ in native mode. If you are using WebSphere MQ
in JMS mode, we recommend that you use the IBM MQ JMS assets.
In the editor for each asset, each parameter has a tooltip that describes the purpose of the
parameter.
The queue and temporary queue assets require you to specify a queue manager asset.
The following graphic shows a queue manager asset.
22-Jul-2016
1589/2016
To add authentication information, click the plus sign and select the User ID and Password fields.
The following graphic shows a queue asset. The parameter where you specify the queue manager
asset is highlighted.
For information about testing the assets, see Verify Assets (see page 455).
22-Jul-2016
1590/2016
icon. To edit an
To create an asset:
1. Define the following fields for this asset. You can use properties for connection parameters.
Name
The name of the asset. This name appears in the Destination field in the step editor. Use a
name that is meaningful for your JDBC system.
Description
Information that provides more details about the system that the asset targets.
JDBC Driver
Enter or select the full package name of the appropriate driver class. Standard driver
classes are available in the drop-down list. You can also use the Browse button to browse
the DevTest class path for the driver class.
Connect String
The connect string is the standard JDBC URL for your database. Enter or select the URL.
The drop-down list contains JDBC URL templates for the common database managers.
User ID
Enter a user ID (if the database requires it).
Password
Enter a password (if the database requires it).
Use Connection Pool
When you select Use Connection Pool, you can configure the connection pool size can be
configured with the lisa.jdbc.asset.pool.size property in the lisa.properties (see page 1744)
file.
22-Jul-2016
1591/2016
2. To display the advanced mode, select the PRO icon in the upper right corner of the asset
editor. The advanced mode allows you to specify the run-time scope (see page 453) of the
asset.
1592/2016
Connection Factories
A connection factory is used to create connections.
The connection factories can be characterized in terms of how they are initialized:
Generic connection factory
Initialized by using the Java Naming and Directory Interface (JNDI).
22-Jul-2016
1593/2016
1594/2016
Connections
A connection represents an active connection with a JMS provider. Connections are used to create
sessions.
Connections can be characterized in terms of the destinations that they support:
Queue connection
Supports queues only. This type is from JMS version 1.0.
Topic connection
Supports topics only. This type is from JMS version 1.0.
Connection
If a connection is not specified as either of the preceding types, then it supports both queues and
topics.
A connection must remain open while its sessions are open.
The following connection assets are available:
JMS Connection
JMS 1.0 Queue Connection
JMS 1.0 Topic Connection
TIBCO Admin Connection
Sessions
A session is used to create producers and consumers.
Sessions can be characterized in terms of the destinations that they support:
Queue session
Supports queues only. This type is from JMS version 1.0.
Topic session
Supports topics only. This type is from JMS version 1.0.
Session
If a session is not specified as either of the preceding types, then it supports both queues and
topics.
A session must remain open while its producers and consumers are active.
The following session assets are available:
JMS Session
22-Jul-2016
1595/2016
Producers
A producer is used to send a message to a destination.
One producer asset is available: JMS Producer.
Consumers
A consumer is used to receive a message from a destination.
One consumer asset is available: JMS Consumer. However, you can use the asset in either of two
ways:
Synchronously
While a client is waiting to receive a message, the client cannot do anything else.
Asynchronously
While a client is waiting to receive a message, the client can perform other tasks.
Destinations
A destination represents a location on the JMS platform where messages are placed.
Destinations are divided into queues and topics:
Queue
A destination that supports the point-to-point messaging model. When a message is sent to a
queue, only one receiver can receive the message.
Topic
A destination that supports the publish/subscribe messaging model. When a message is sent to a
topic, multiple receivers can receive the message.
Destinations can also be characterized in terms of how they are created:
JNDI destination
Initialized by using the Java Naming and Directory Interface (JNDI).
Temp JNDI destination
A JMS session can be used to create a destination temporarily. This destination exists as long as
the session is open, and is deleted when the session is closed.
Destination
A static destination is not specified as either of the preceding types, and is obtained through the
JMS session.
22-Jul-2016
1596/2016
Destination assets are a combination of these two categories. For example, the JMS JNDI Queue asset
is a point-to-point destination that is initialized through JNDI.
The following destination assets are available:
JMS Queue
JMS JNDI Queue
JMS Temporary Queue
JMS Topic
JMS JNDI Topic
JMS Temporary Topic
Mobile Assets
Mobile assets are no longer required when you create a new test case with Mobile Testing. Instead,
properties are used to define mobile configuration options. See Assets vs. Mobile Properties (see
page 651) for more information.
Mobile test cases created with previous versions of DevTest Solutions can include assets, but all new
test cases use properties.
RabbitMQ Assets
You can create the following types of assets for RabbitMQ:
RabbitMQ Connection
RabbitMQ Queue
RabbitMQ Exchange
1597/2016
Connection
The connection asset lets you establish a connection to the RabbitMQ server.
Specify the following information:
Host name and port number of the RabbitMQ server
User name and password for accessing the RabbitMQ server
When you configure the connection asset, you can use the green Verify button to confirm that the
server can be reached.
The following graphic shows a connection asset.
22-Jul-2016
1598/2016
Queue
A queue represents a location where a message can wait to be picked up by a consumer.
Like JMS and WebSphere MQ, more than one client can listen on the same queue. Each message is
delivered to only one consumer.
Like JMS and WebSphere MQ, a client can create a temporary queue on demand.
Like WebSphere MQ, a client can specify the name of the temporary queue or let RabbitMQ generate
a name.
Unlike JMS, WebSphere MQ, and most other messaging providers, you cannot publish a message
directly to a queue. Instead, you publish to an exchange.
The following graphic shows a queue asset.
22-Jul-2016
1599/2016
Exchange
An exchange is an additional routing layer that exists between publishers and queues.
A consumer binds the queue it is listening on to an exchange using a routing key. This routing key
tells the exchange which messages should be routed to the queue. The exact interpretation of the
routing key depends on the type of exchange.
A publisher sends a message to an exchange along with its own routing key. This routing key tells the
exchange how to route the message to one or more destination queues. Again, the exact
interpretation of the routing key depends on the type of exchange.
The routing key used by the publisher to send a message to the exchange and the routing key used by
the consumer that receives the message on its queue are usually matched in some way, but they are
not necessarily equal.
22-Jul-2016
1600/2016
If a message is published to an exchange with a routing key that does not match any currently bound
queues, the message is discarded. So while the queue side is like a JMS queue, where a message
waits to be consumed, the exchange side is like a JMS topic, where a queue has to be bound to the
exchange with a matching routing key at the time the message is published in order to receive it. Also
like a topic, if more than one queue has binding parameters that match a given message according to
the exchange's routing rules, the message is forwarded to all of those queues at the same time.
The exchange types have different routing strategies:
Default
If you do not specify the name of an exchange when publishing a message, the default exchange
is used. Each queue created on a RabbitMQ server, including temp queues, is automatically
bound to the default exchange with a routing key equal to the queue name. Therefore, publishing
with an empty exchange name and the queue name as the routing key is the closest you can get
to publishing directly to a queue.
Direct
With a direct exchange, each consumer's queue is bound to the exchange with a unique string as
its routing key. The routing key might be the name of the queue or something completely
different. Publishers send a message to the exchange with a routing key. The message is routed to
every queue that is bound with the same routing key.
Topic
Topic exchanges are almost the same as direct exchanges. However, with a topic exchange the
routing key used to bind a queue can be a routing pattern that can match more than one message
routing key. Basically, routing patterns are dot-delimited strings where the text between each dot
can be a literal string or one of two wildcards. The star wildcard (*) matches one string. The hash
wildcard (#) matches zero or more dot-delimited strings.
Headers
Rather than routing based on the routing key, a headers exchange routes based on one or more
custom message properties. A queue is bound to the headers exchange with one or more custom
bind properties that must match the custom properties on a message sent to that exchange. By
default, to be routed to a queue a message must have properties that match all the properties
that the queue was bound with. An additional bind property can change this behavior so that only
one of the message's properties must match.
Fanout
A fanout exchange routes every message to every queue bound to it. It does not use the routing
key or any other routing logic.
The Channel field must be set to a channel asset or a connection asset.
Temp Queue
Temp queues are probably much more prevalent with RabbitMQ RPC-style services than they are
with other messaging providers. The reason is that message filtering is not done at the queue level.
All the filtering is done at the exchange level with routing rules. Once a message is passed on to a
particular queue, then there it is going to be delivered to one of the consumers on that queue.
Basically, a one-to-one correspondence exists between consumers and queues. The only reason to
have more than one consumer on the same queue is to load balance or parallelize the processing of
messages from that queue; all of those consumers must necessarily do the same processing.
22-Jul-2016
1601/2016
Channel
The channel asset represents a RabbitMQ channel. Typically, you do not need to create this type of
asset.
To create an asset:
1. Define the following fields for this asset. You can use properties for SAP connection
parameters.
Name
22-Jul-2016
1602/2016
1.
22-Jul-2016
1603/2016
22-Jul-2016
1604/2016
2. To display the advanced mode, select PRO in the upper right corner of the asset editor. The
advanced mode allows you to specify the runtime scope (see page 453) of the asset.
3. To select advanced SAP connection properties, click Advanced Connection Settings. You can
override the default value of a setting by entering a value for the setting. Select the settings
that you want, and click OK.
SSL Assets
Historically, the only way to configure most SSL operations was to define global properties in the
local.properties file:
javax.net.ssl.keyStore=keystore.jks
javax.net.ssl.keyStorePassword=12345
javax.net.ssl.trustStore=truststore.jks
javax.net.ssl.trustStorePassword=12345
The problem with this approach is that it reconfigures SSL globally, affecting every SSL connection
that is made.
As of release 8.1, the following assets let you define an SSL context:
22-Jul-2016
1605/2016
Basic Scenarios
The first two scenarios mirror what is possible to do through the local.properties file.
22-Jul-2016
1606/2016
This configuration is equivalent to the local.properties lines, but applies only to the IBM MQ
connection.
Note: Key store files and trust store files use the same file format. It is still called a "key
store" in most places, even if it is being used as a trust store.
A trust store and key store using the default key: Two Key Store File Assets
This is the standard two-way SSL situation, where we need a trust store for the server certificate and
a key store containing the client private key.
Historically, this scenario would have required the following global configuration in the local.
properties file:
javax.net.ssl.keyStore=keystore.jks
javax.net.ssl.keyStorePassword=12345
javax.net.ssl.trustStore=truststore.jks
javax.net.ssl.trustStorePassword=12345
22-Jul-2016
1607/2016
Again, this configuration is equivalent to the local.properties lines, but applies only to the IBM MQ
connection.
Advanced Scenarios
Because you can manipulate the SSL context directly, there are a few things that you can do that are
not possible through the local.properties file.
Forgoing the trust store: The "Trust All" Trust Manager Asset
If the server is using a self-signed or otherwise untrusted certificate, but you do not care about
validating it against a known certificate, you can use the "Trust All" Trust Manager asset.
Follow the above steps, but rather than selecting a specific Key Store asset as the trust store under an
SSL Context, create a new Trust All Manager asset.
This is a Trust Manager rather than a Key Store. It basically implements an "acceptance rule" that
always passes for any server certificate.
22-Jul-2016
1608/2016
Note: If you want to use the Trust All Manager without a client-side key store, you can
leave the Key Store field in the SSL Context blank. However, you cannot select a Trust All
Manager directly from the SSL Context field in the IBM MQ Native Queue Manager asset.
This also allows you to specify a password for the private key. This is necessary if the private key's
password is different from the key store's password, in fact, this is the only way to support that
scenario.
22-Jul-2016
1609/2016
The generic Trust Manager asset and the Trust All Manager asset are the same type. As a result,
you can override one with the other in child configs if you want to turn certificate checking on or
off under certain environments.
Companion Descriptions
A companion is an element that runs before and after every test case execution.
This section describes the following companions:
Web Browser Simulation Companion (see page 1611)
Browser Bandwidth Simulation Companion (see page 1612)
HTTP Connection Pool Companion (see page 1612)
22-Jul-2016
1610/2016
22-Jul-2016
1611/2016
22-Jul-2016
1612/2016
Simulator 1 creates five connections to web server 1, and five connections to web server 2. Simulator
2 does the same thing. Each web server now has 10 client connections. At the first HTTP step, a
virtual user must wait for one of the five connections to web server 1 to become available. The virtual
user uses the connection to make the HTTP call, and the connection goes back into the pool.
The following graphic illustrates this scenario. Simulator 1 has five connections to web server 1 and
five connections to web server 2. Simulator 2 has five connections to web server 1 and five
connections to web server 2.
22-Jul-2016
1613/2016
1614/2016
to display a drop-down list of event types. Select any number of events from the list.
to delete an event type from the list.
Define Properties
Select a component name and associated property from the drop-down list. You can add
components by clicking Add
22-Jul-2016
1615/2016
The Observed System VSE companion supports these requirements. If a virtual service will provide
this behavior, add and configure this companion.
Configuration Information (see page 1616)
Data Set Source Example (see page 1617)
Observed System Data Provider (Wily) Source (see page 1622)
Run Time Priorities (see page 1624)
Configuration Information
The Observed System companion requires the following parameters:
Start date/time and End date/time
Defines a time "window" in which to read observed response times. These timestamps are
inclusive. Timestamp data from your data set or data provider that is outside this window is
ignored.
Assumed run length
Defines a duration that represents the interval over which the virtual service "fits" the response
time curve. For the previous example, this value would be set to three hours.
For example, with the following values:
The assumed run length is 30 minutes
The Start date/time window is 30 minutes
The End date/time window is 30 minutes
The buffer size is 10 minutes
we get the buffer for the first 10 minutes, then for 10-20 minutes, then for 20-30 minutes, then
45-60 minutes.
With the following values:
The assumed run length is 15 minutes
The Start date/time window is 30 minutes
The End date/time window is 30 minutes
The buffer size is 10 minutes
The first 10 minutes plays back in the first 5 minutes, the second 10 minutes plays back in the
second 5 minutes, and the third 10 minutes plays back in the third 5 minutes.
Buffer size
Defines a duration in minutes and can be used to control how much of the response time data is
acquired at once. The parameter defaults to one hour of data at a time.
For example, an assumed run length of 1 hour and a buffer size of 15 minutes provides the
following results:
We get the buffer for the first 15 minutes
22-Jul-2016
1616/2016
Note: For DevTest 8.2 and later, the metric-data-service.jar from CA APM must be in the lib
/core folder in the DevTest directory.
22-Jul-2016
1617/2016
The virtual service model that is associated with this service image has a few simple steps.
1. To add a companion, click
The top part of the panel provides general information about the parameters for the companion.
In this example, the Start date/time and End date/time define a two-hour window, but the Assumed
run length is set to one hour. Therefore, for every one hour of VSE run time, the companion goes
through two hours of data from the data set data provider. The buffer size of 30 minutes means that
VSE accesses the data set every 30 minutes to retrieve data. The buffer size is before scaling.
Therefore, with a 30-minute buffer:
VSE retrieves data from the data set between 10:22 and 10:52.
VSE scales (in this case) by half so it can calculate correctly.
22-Jul-2016
1618/2016
Observed System Companion - Select Data Set Type right-click menu enabled
When the table for Create your own Data Sheet opens, the columns are prepopulated with:
id
Matched against the Operation Name when the request is being processed.
timestamp:
responseTime
If the standardDeviation value is 0, the responseTime defines the interval to use during playback.
Use the mathematical formula that is described for the standardDeviation column for non-zero
values. This response time calculation overrides the think time spec of 15 milliseconds that was
set in the service image.
22-Jul-2016
1619/2016
standardDeviation
Defines the statistical data that represents the standard deviation from the mean value of the
response time. The response time that is used during playback is within +/- 3sigma of the average
response time. If x is the responseTime and y is the standardDeviation, the response time during
playback is a random value in the range (x -3 y) and (x +3 y).
These columns are required for any type of data set provider that you use to provide information for
this companion.
In this example, copy the Operation Name of GET / dsdpTest from the service image and enter it in
the id field. In the responseTime field, enter 150.
Observed System Companion - Select Data Set Type right-click menu enabled
In the timestamp field, enter a date and time that falls into the time window that Start date/time
and End date/time define.
To continue the example, we use an existing project with a prepopulated data set.
22-Jul-2016
1620/2016
The data set response times define an increase of 100 milliseconds every 30 seconds. Therefore, this
companion should always override the Think time spec of 15 milliseconds that is set in the virtual
service model.
Note: When you deploy the virtual service, do not enter a Think time scale of 0 percent.
22-Jul-2016
1621/2016
This example fetches all the Average Response Time metrics for the web service. To retrieve the
metrics for specific operations, use a custom RegEx.
Default: ".*"
22-Jul-2016
1622/2016
Service Username
Specifies the user name used to access the Wily service.
Service Password
Specifies the password that is associated with the Service Username, if necessary.
To test the behavior of the companion, stage a quick test.
The test case in this example had one step, an output log message step. You can see the output in the
Test Events tab of the Quick Stage Run window.
In the config file that is used for this test case, setting the property debug to true means that the log
message appears in the output.
22-Jul-2016
1623/2016
22-Jul-2016
1624/2016
Click Add, Delete, and Move to add, delete, and reorder Transition Points. You can directly edit the
Delay and Think Scale entries. You can also click and drag the lines in the Timeline display to indicate
the delay and scale that you want. The Transition Points table is updated to correspond.
Relative TS
Calculated based on the delay you enter, in format hh:mm:ss.ms.
Delay
The interval, in minutes and seconds, to wait before the specified think scale is applied.
22-Jul-2016
1625/2016
Think Scale
The think scale is a percentage that is applied to the think times in the responses.
Start over when timeline runs out
If the end of the timeline is reached, start from the first Relative TS.
If you click the label for the right-most tick mark on the horizontal axis, you can adjust the total
timeline of the companion. This label is the "1h" label in the previous window. The Update Timeline
Duration dialog opens. If you update the timeline duration to be shorter than your transition points,
you receive a warning that some transition points are removed.
As you move your cursor over the graph, tooltips display that show time on vertical lines and think
scale percentages on horizontal lines.
1626/2016
1627/2016
22-Jul-2016
1628/2016
to add a line in
Note: Any Java objects that you want to edit or run must be in the class path or the
hotDeploy directory. They must not be in the DevTest lib or bin directories. The Class
Loader Sandbox will not work because of the way the Java VM loads classes.
22-Jul-2016
1629/2016
22-Jul-2016
1630/2016
22-Jul-2016
1631/2016
Correlation Schemes
You can enable correlation in the following test steps:
JMS Send Receive Step (see page 1886)
IBM MQ Native Send Receive Step (see page 1924)
RabbitMQ Send Receive Step (see page 1928)
22-Jul-2016
1632/2016
22-Jul-2016
1633/2016
Correlation ID
Most messaging platforms have a correlation ID field. In this scheme, the client generates a unique ID
and sends a request message containing that ID in the correlation ID field. Before the service sends
the response message, the service copies the correlation ID from the request message to the
response message. The client listens for a response message that contains the same correlation ID as
the original request.
By default, the correlation ID is automatically generated. To specify the value manually, use the
Manual Value field.
The Reuse ID list indicates whether to generate a new correlation ID for each new transaction or use
the same correlation ID throughout the test.
Message ID to Correlation ID
This scheme is similar to the Correlation ID scheme.
Most messaging platforms also have a message ID field, which contains a unique identifier for the
message. The message ID is automatically generated.
Before the service sends the response message, the service copies the message ID of the request
message to the correlation ID of the response message. The client listens for a response message that
contains a correlation ID that matches the message ID of the original request.
You cannot specify the message ID manually. You cannot reuse message IDs.
Payload
This scheme is based on a correlation ID that is embedded in the payload of the request and response
messages. The scheme has an associated payload scheme that controls how the correlation ID is
embedded. The default payload scheme lets you define XPath expressions for obtaining the
correlation ID from the messages.
The following graphic shows an example of the JMS Payload correlation scheme with the XPath
payload scheme.
22-Jul-2016
1634/2016
The Reuse ID list indicates whether to generate a new correlation ID for each new transaction or use
the same correlation ID for the duration of the test.
You cannot mix the Payload correlation scheme with the other two correlation schemes on the same
queue. If one listener is listening on a queue with the Payload correlation scheme, then all listeners
on that queue must be using the Payload correlation scheme. However, you can use Correlation ID
and Message ID to Correlation ID as payload schemes for the Payload correlation scheme.
1635/2016
Notepad file with month,day,year - example of a Delimited Data File data set
22-Jul-2016
1636/2016
1637/2016
1638/2016
Note: Moving the rows up or down in the table can affect the outcome of a test. The order
of columns does not affect the outcome of the test.
22-Jul-2016
1639/2016
Create Large Data Set window with data and all parameters specified
1640/2016
Create Large Data File dialog for specifying number of rows and column names
22-Jul-2016
1641/2016
22-Jul-2016
1642/2016
1643/2016
1644/2016
Note: Excel File data sets and Excel DTO data sets can use Excel 2007 or later spreadsheets.
Excel DTO data sets are still created using the XLS format.
22-Jul-2016
1645/2016
1.
DevTest Solutions - 9.5
Name
The name of the data set. This name becomes the property that is used to store the
current DTO object.
Local
Designates whether the data set is global or local. Global is the default. Local data sets are
created with one for each simulator. Global data sets are created once and shared by all
simulators.
Random
Whether the record after the current record (sequential access) is read, or a random
record is read. Sequential reading is the default.
Max Records to Fetch
The upper bound on the number of records to fetch for random access. This text field is
disabled if the Random check box is not selected.
At End Of Data
Select the action for the end of the data set. You can start over, reading values from the
start of the data set, or you can select the step to execute.
File
The fully qualified path name, or browse to the Excel file using the browse pull-down
menu.
DTO Class Name
The full package name, or browse to, the DTO object. The class file must be on Test
Manager. Your class can be copied to the hotDeploy directory to put it on the Test
Manager.
Advanced Settings let you specify:
Use flattened child property notation during generation
Select to override child property flattening during Excel DTO data set generation. If
cleared, child properties are generated as references with their own worksheets.
Use new empty cell semantics for flattened properties
Empty cell semantics for flattened properties means how empty cells are interpreted in a
DTO spreadsheet. For example, given the following flattened properties:
{"prop1.subprop1","prop1.subprop2"}
if both subprop1 and subprop2 have empty cell values, then under the new semantics the
reference to "prop1" is set to null. Under the old semantics, prop1 would be not null, but
references to subprop1 and subprop2 would both be null. The new semantics should be
used by default, especially by web services with WSDLs that use nonnillable types. If not
used in the case of nonnillable types, the intermediate not null references for containing
properties that are automatically created when reading a DTO spreadsheet could result in
the generation of invalid XML according to the schema (because cell values are empty).
2. Click Generate Template. DevTest builds the template and the system messages report when
the file is built.
22-Jul-2016
3.
1646/2016
Type
balance
Double
id
int
name
String
poAddr
Address
since
Date
types
int[]
locations
Address[]
Type
city
String
line1
String
line2
String
state
String
zip
String
The first six Customer DTO properties can appear on one Excel spreadsheet. However, the locations
property, an array of Address objects, requires a second Excel spreadsheet.
Looking at the first spreadsheet, at the top, DevTest lists the DTO spec (Customer) and the current
DTO object (Customer). The spreadsheet would also list the Java doc location, if available. The
following graphic shows the data sheet, with a row specifying property names, followed by a row
specifying the data types. The first field (column) is not a DTO property, but a special field (Primary
key), that holds a unique value for each row.
22-Jul-2016
1647/2016
Excel file with with a row specifying property names, followed by a row specifying the data types
Excel file his sheet contains the data for an Address object in each row
Because each Customer object can have several locations, several rows in the locations sheet belong
to an object specified in a single row of the Customer sheet. The second sheet manifests this by
listing the primary key of the parent Customer object in the "reference the containing DTO" field of
each location that belongs to the Customer. This is similar to primary/foreign key relationships in
databases.
22-Jul-2016
1648/2016
Excel file for Read DTOs from Excel File Data Set
When you save the spreadsheet and click Test and Keep in DevTest, you see the first Customer DTO
in the message.
Depending on the complexity of your DTO, you could have several more Excel sheets in the Excel
workbook. However, the process is the same as in the previous example.
22-Jul-2016
1649/2016
22-Jul-2016
1650/2016
1651/2016
22-Jul-2016
1652/2016
Note: A large amount of data could take longer than you want; use the Cancel button to
stop the operation.
22-Jul-2016
1653/2016
At design-time, the first record of an XML Data Set populates the value for a property in test state by
clicking Test and Keep. The property name is the same as the name of the data set. For example, if
the data set has the name DataSet1, then the property that is populated in the test case is
"{{DataSet1}}". At run time, all of the records can be accessed sequentially to create a data-driven
test case.
22-Jul-2016
1654/2016
Directory path
This read-only value represents the directory on the file system where records are saved. The
mapping between a record and a file in the directory path is a one-to-one mapping. If an XML
data set is created within a project, the directory path starts with "{{LISA_PROJ_ROOT}}/Data
/datasets/xml/" or "{{LISA_RELATIVE_PROJ_ROOT}}/Data/datasets/xml/". If no project is used,
the directory path starts with "{{LISA_HOME}}/datasets/xml/".
22-Jul-2016
1655/2016
Action Buttons
First
Move to the first record in the XML data set.
Previous
Move to the previous record.
Next
Move to the next record.
Last
Move to the last record.
New
Create a record.
22-Jul-2016
1656/2016
Copy
Create a copy of the current record at the end of the data set and move to it.
Delete
Delete the current record.
Save
Save all pending changes.
Revert
Revert all pending changes.
22-Jul-2016
1657/2016
This tab contains a raw text view of the XML contained in a record.
Double-clicking the left border toggles the visibility of a top toolbar, line numbers bar, and bottom
editing info bar in the editor.
Event Descriptions
An event is a message about an action that has occurred.
The following table describes the standard events.
Event Description
Name
Short Info
Event Aborted
Asser
t
evalu
ated
22-Jul-2016
Long Info
1658/2016
Confi
gure
for
load
test
Cycle The test execution completed in a successful The name of the test
ende state.
case
d
norm
ally
Cycle The instances have been instructed to stop
endin testing.
g
Cycle
failed
22-Jul-2016
1659/2016
Cycle History
Cycle This test instance and cycle have just started. The name of the test
starte
case
d
Data Data sets generate an event that makes it
set clear what values are about to be used.
read
22-Jul-2016
1660/2016
The XML
representation of the
DevTest Integration
data captured
If available, a message
to help determine the
cause of the failure
Step history
Step Steps that support this event use it to report The name of the step
reque the actual request made to the system under
st
test.
22-Jul-2016
1661/2016
The number of
milliseconds to execute
the step
Step
respo
nse
band
width
Suite History
22-Jul-2016
1662/2016
VS
VSE internal logging
log
mess
age
VS log message
VS
A virtual service did not match a transaction
no
request to at least one recorded response.
trans
actio
n
matc
h
VS transaction no
match
VS
A virtual service was stopped.
servic
e
ende
d
VS service stopped
VS
A virtual service was started.
servic
e
starte
d
VS service started
22-Jul-2016
1663/2016
VS transaction match
VSE A service reset request was made of a server. VSE server resets
serve
r
reset
VSE A virtual service environment was asked to
serve shut down.
r
shutd
own
VSE A service stop request was made of a server. VSE server stops
serve
r
stop
Filter Descriptions
A filter is an element that runs before and after a step.
This section describes the following filters:
Utility Filters (see page 1665)
Database Filters (see page 1670)
Messaging/ESB Filters (see page 1676)
HTTP/HTML Filters (see page 1678)
XML Filters (see page 1693)
JSON Filters (see page 1698)
Java Filters (see page 1700)
VSE Filters (see page 1702)
CAI Filters (see page 1702)
Copybook Filters (see page 1704)
Regular expressions are used for comparisons in several filters. For more information about regular
expressions, see Regular Expressions (http://psoug.org/reference/regexp.html).
22-Jul-2016
1664/2016
Utility Filters
The following filters are available in the Utility Filters list for any test step:
Create Property Based on Surrounding Values (see page 1665)
Store Step Response (see page 1667)
Override Last Response Property (see page 1668)
Save Property Value to File (see page 1668)
Parse Property Value As Argument String (see page 1669)
Save Property from One Key to Another (see page 1669)
Time Stamp Filter (see page 1670)
In the following example, the goal is to store the size of a specific file in a property.
The text is marked using the editor icons, by selecting the text, and then clicking the appropriate icon.
22-Jul-2016
1665/2016
icon.
Red background identifies the text that is stored in the property that is entered in the dialog
(indicated by a single arrow). This is a Property block and is marked using the Property
icon.
This screen shows the contents of the text buffer. The goal is to parse the file size of the _miscreporting.jar file. The file size is the number that appears after _misc-reporting.jar.
The boundaries are set around the file size, and Must
inside the selected content was selected, and Property
The property name was then entered into the dialog. The actual value of the file size has been
replaced with the name of the property.
When this filter is run, the property filesize is assigned the size of the _misc-reporting.jar file.
22-Jul-2016
1666/2016
To solve this issue in most cases, simply create another token to make the prior token a Must token
also. In other cases, when this technique does not work, a judicious placement of another Must block
between the two duplicate tokens avoids the error.
This solution works because DevTest can distinguish between the two duplicate tokens, which are
based on their relative location.
22-Jul-2016
1667/2016
22-Jul-2016
1668/2016
22-Jul-2016
1669/2016
Post Process
Run the filter after the step.
Database Filters
The following filters are available in the Database Filters list for any test step:
Extract Value from JDBC Result Set (see page 1671)
Size of JDBC Result Set (see page 1673)
Set Size of a Result Set to a Property (see page 1673)
Get Value For Another Value in a Result Set Row (see page 1674)
22-Jul-2016
1670/2016
22-Jul-2016
1671/2016
5. Click OK.
The filter to store the value sbellum in the property theLogin is created.
22-Jul-2016
1672/2016
Note: This filter can serve the purpose of a general global assertion because you can select
a next step based on the presence of an error.
1673/2016
To run and execute the filter, click Run Filter. The results appear in the Filter Run Results section.
22-Jul-2016
1674/2016
3. Select Filter for a value and then get another column value filter using the Filter
icon.
4. In the the Generate Value for Value Filter dialog, select or reassign the columns for the
search and the value, then enter the Property Key.
5. Click OK.
22-Jul-2016
1675/2016
Messaging/ESB Filters
The following filters are available in the Messaging/ESB Filters list for any test step:
Extract Payload and Properties from Messages (see page 1676)
Convert an MQ Message to a VSE Request (see page 1677)
Convert a JMS Message to a VSE Request (see page 1677)
22-Jul-2016
1676/2016
22-Jul-2016
1677/2016
HTTP/HTML Filters
The following filters are available in the HTTP/HTML Filters list for any test step:
Create Resultset from HTML Table Rows (see page 1678)
Parse Web Page for Properties (see page 1680)
Parse HTML/XML Result for the Value of a Specific Tag or Attribute (see page 1683)
Parse HTML Result for Specific Value and Parse It (see page 1685)
Parse HTML Result for the Child Text of a Tag (see page 1686)
Parse HTML Result for HTTP Header Value (see page 1686)
Parse HTML Result for the Value of an Attribute (see page 1687)
Parse HTML Result for DevTest Tag (see page 1688)
Choose Random HTML Attribute (see page 1688)
Parse HTML into List of Attributes (see page 1689)
Parse HTTP Header Cookies (see page 1690)
Dynamic Form Filter (see page 1690)
Parse HTML Result by Searching Tag Attribute Values (see page 1691)
Inject HTTP Header (see page 1692)
22-Jul-2016
1678/2016
3.
22-Jul-2016
1679/2016
To show the filter results, we added a step of type Save Property as Last Response and added the
property that the filter creates. The result set panel displays the results.
Result set panel showing results of Create Resultset from HTML Table Rows filter
If you are editing a test case, you may need to replay the test case to generate the property from the
filter using the Replay test case to a specific point command. To do so, use the Replay test case to a
specific point command. The Replay test case to a specific point command is activated by clicking
Replay
on the toolbar. You can now use the embedded filters and assertions that are available
at the bottom of the result set window of this step.
22-Jul-2016
1680/2016
In the following example, assume that the website title "LisaBank - Home" changes from user to user,
and therefore must be stored as a property.
This window shows the HTML that is rendered in a browser in the top panel, and the actual HTML
text in the bottom panel.
To create properties from fields on a website:
1. Navigate to the field identified in the HTML text in the bottom panel.
22-Jul-2016
2.
1681/2016
4. Click Property
.
The Select Property dialog is displayed.
5. Enter the property name into the dialog.
In the HTML text in the bottom panel, the name of the property replaces the website name
text. The red background identifies the text that is stored in the property that is entered into
the dialog.
Frequently you can do this action purely from the web page view by selecting the content in the web
browser. It can be easier to click the web browser in the area that you want to select, and then make
your selection in the HTML panel.
The Website Title property is assigned the current value that appears on the HTML page when the
filter runs. The website title can change its location in the text buffer and it is still found and parsed
for the property.
To define more properties, repeat this process on this text buffer.
Handling Nonunique Tokens
If you see the following error message, your selected token is not unique; the selection you made is
repeated in the token before it.
22-Jul-2016
1682/2016
To solve this issue in most cases, simply create another token to make the prior token a Must token
also. In other cases, when this technique does not work, a judicious placement of another Must block
between the two duplicate tokens avoids the error.
This solution works because DevTest can distinguish between the two duplicate tokens, which are
based on their relative location.
1683/2016
2. From the DOM Tree view, select the attribute whose value you want to store in a property.
3. When it is highlighted, select Parse Value Filter.
4. Enter the property name in the window.
22-Jul-2016
1684/2016
4.
DevTest Solutions - 9.5
22-Jul-2016
1685/2016
1686/2016
22-Jul-2016
1687/2016
If a tester has installed this type of filter, the property FIRST_USER is automatically assigned the value
sbellum. This filter removes any need for the tester to parse for this value. This type of filter helps a
developer make the testing easier.
Frequently a web page does not contain the information that is necessary for proper validation, or
that information is difficult to parse. Even when the information exists, subtle changes in the
generated HTML can result in incorrect parsing. This filter can resolve many parsing issues for web
testing.
No parameters are required.
22-Jul-2016
1688/2016
Attribute
The attribute from which to retrieve text. If this field is blank, the child text of the inner tag is
returned.
Property Key
The property to store the text of the attribute.
Filter Run Results
Displays the property and values that result from running the filter.
Run Filter
To run and execute the filter, click Run Filter. The results appear in the Filter Run Results section.
1689/2016
22-Jul-2016
1690/2016
Using a property key of FormTest in the filter panel creates the following key/value pairs:
Key
Value
FormTest.Form1.text1.name
0001A
FormTest.Form1.text1.value
default
FormTest.Form1.text2.name
0001B
FormTest.Form1.text2.value
FormTest.Form2.text1.name
0002A
FormTest.Form2.text1.value
FormTest.Form2.text2.name
0002B
FormTest.Form2.text2.value
22-Jul-2016
1691/2016
Note: For an example that uses this filter, see Test Templates (see page 1192).
22-Jul-2016
1692/2016
Skip To Step
Specifies the last step to exclude from being updated. This step is optional. For example, assume
that the test case has four steps: A, B, C, and D. If you set this field to B, then the filter applies
only to steps C and D. If you set this field to C, then the filter applies only to step D.
The headers are case sensitive. For example, Authorization is different from authorization.
The following graphic shows an example of this filter. The Header Key field is set to Authorization.
The Header Value field is set to {{token_type}}{{space}}{{access_token}}.
XML Filters
The following filters are available in the XML Filters list for any test step:
Parse Text from XML (see page 1693)
Read Attribute from XML Tag (see page 1695)
Parse XML Result for DevTest Tag (see page 1697)
Choose Random XML Attribute (see page 1697)
XML XPath Filter (see page 1697)
22-Jul-2016
1693/2016
Tag
The type of the tag. For example, if you want the child text of the multiRef tag, enter "multiRef".
You can use a property in this field.
Tag Count
The occurrence of the tag. For example, if you want the child text of the first multiRef tag, set the
count to "1". You cannot use a property in this field.
Property
The property in which to store the value.
Filter Run Results
Displays the property and values that result from running the filter.
Run Filter
To run and execute the filter, click Run Filter. The results appear in the Filter Run Results section.
To create the filter directly from the response page:
1. From the DOM Tree view, select the attribute whose value you want to store in a property.
2. After it is selected, select Generate Filter for Attribute or Text.
3. Enter the property name in the dialog.
22-Jul-2016
1694/2016
3.
DevTest Solutions - 9.5
1695/2016
Step response
2. From the DOM Tree view, select the attribute whose value you want to store in a property.
3. When it is highlighted, select Generate Filter for Attribute or Text.
4. Enter the property name in the window.
22-Jul-2016
1696/2016
You can also add an assertion here. A Property Value Expression Assertion can be added to
this step.
If a tester has installed this type of filter, the property "FIRST_USER" is automatically assigned the
value sbellum. This filter removes any need on behalf of the tester to parse for this value. This type of
filter helps a developer make the testing easier.
Sometimes the XML does not contain the information that is necessary to validate properly, or that
information is difficult to parse. Even when the information exists, subtle changes in the generated
XML can result in incorrect parsing. This LISAPROP filter can resolve many parsing issues.
No parameters are required.
22-Jul-2016
1697/2016
Note: The DevTest XML XPath filter is based on the HTML DOM (http://www.w3.org/TR/1998
/REC-DOM-Level-1-19981001/level-one-html.html) spec that maintains that all DOM element
names must be upper case, while attribute names must be lower case.
JSON Filters
The following filter is available in the JSON filters list for any test step:
JSON Path Filter (see page 1698)
22-Jul-2016
1698/2016
Note: Web sites are available to check the validity of the JSON path expression. One
example is https://jsonpath.curiousconcept.com/. Another resource is the editor for the
Ensure Result Equals (see page 1565) assertion.
22-Jul-2016
1699/2016
String
Number
Boolean
== (equal)
supported
supported
supported
!= (not equal)
supported
supported
supported
>=
not supported
supported
not supported
<=
not supported
supported
not supported
>
not supported
supported
not supported
<
not supported
supported
not supported
in
supported
supported
not supported
not in
supported
supported
not supported
Java Filters
The following filters are available in the Java Filters list for any test step:
Java Override Last Response Property Filter (see page 1700)
Java Store Step Response Filter (see page 1701)
Java Save Property Value to File Filter (see page 1701)
1700/2016
22-Jul-2016
1701/2016
Append Mode
To append the information to an existing file, select this check box.
Filter Run Results
Displays the property and values that result from running the filter.
Run Filter
To run and execute the filter, click Run Filter. The results appear in the Filter Run Results section.
VSE Filters
The following filter is available in the VSE Filters list for any test step:
Data Protocol Filter (see page 1702)
CAI Filters
The following filters are available in the CAI Filters list for any test step:
DevTest Integration Support for CA CAI (see page 1703)
DevTest Integration Support for webMethods Integration Server (see page 1703)
22-Jul-2016
1702/2016
22-Jul-2016
1703/2016
Copybook Filters
The following filter is available in the Copybook Filters list for any test step:
Copybook Filter (see page 1704)
Copybook Filter
The Copybook Filter converts copybook payloads to XML at run time. You can review and maintain
your data by displaying these payloads in XML.
To open its editor, click the filter.
Complete the following fields:
Filter in
Specifies the name of the property to filter for the step. If the property is not in the pull-down
menu, you can enter it. The property must exist. You can edit this value for this filter.
Copybook definition file
Designates the location where you store your copybook file definition.
Encoding
Select a valid Java charset. This value is used to try to convert the bytes in the payload into text
for use in the output XML.
Default: UTF-8
Copybook parser column start
Copybooks frequently start each line with a line number. This parameter defines the column on
which the parser starts when trying to parse a copybook file definition.
Value: A zero-based inclusive index. However, you can think of it as a "normal" one-based
exclusive index.
Default: 6
Example: If you set this value to 6, the parser skips the first six characters in a line and starts with
the seventh character.
Copybook parser column end
Occasionally, copybooks contain other reference data at the end of each line. When that
happens, the parser must know on which column to stop. If there is no "extra" data at the end of
the lines in the file, set this number to something greater than the length of the longest line in the
file. If this number is greater than the length of a line, the parser stops at the end of the line.
Value: A zero-based exclusive index. However, you can think of it as a "normal" one-based
inclusive index.
Example: If you set this value to 72, the parser reads the 72nd character in the line and then it
stops.
Filter Run Results
Displays the property and values that result from running the filter.
Run Filter
To run and execute the filter, click Run Filter. The results appear in the Filter Run Results section.
22-Jul-2016
1704/2016
Metrics Descriptions
Metrics let you apply quantitative methods and measurements to the performance and functional
aspects of your tests, and the system under test.
This section describes the following metrics:
DevTest Whole Test Metrics (see page 1705)
DevTest Test Event Metrics (see page 1706)
SNMP Metrics (see page 1707)
JMX Metrics (see page 1708)
TIBCO Hawk Metrics (see page 1711)
Windows Perfmon Metrics (see page 1712)
UNIX Metrics Via SSH (see page 1714)
22-Jul-2016
1705/2016
Note: The number of virtual users (Instances), average response times (Avg Resp Time),
and Steps Per Second sub metrics are added by default to the metric list in a staging
document.
22-Jul-2016
1706/2016
If the Counter check box is not selected, the metric collector attempts to parse the long description
of the event as a number. During the sampling period the collector keeps a running total of these
parsed values. When the metric is reported it is a simple average of the parsed numbers. The running
total is reset for each sampling period. If there is not a number value that is contained in the long
description of the event, the metric value is 0.
The default sampling period is 1 second and can be modified in the staging document.
Click OK to add this metric to the list of metrics.
SNMP Metrics
The SNMP metrics use the Simple Network Management Protocol (SNMP) to monitor the system
performance.
Setting up SNMP Support
Configure SNMP before you can collect the SNMP metrics. For more details about setting up SNMP
on UNIX and Windows, see Install and Configuring SNMP (see page 150).
To add SNMP Metrics:
1. Select SNMP Metric from the dialog and click OK.
The Add SNMP Metric dialog opens.
The MIB Groups tree displays all the SNMP metrics that come standard with DevTest
Workstation.
A MIB is a predefined database of a set of metrics on a specific domain.
Host
The Host field provides system information about a server hosting a coordinator server.
Some host metrics include hrProcessorLoad for CPU utilization and hrSystemUptime for
the amount of time after this host was last initialized.
Server O/S
Provides information that is related to the system, like up time, date, and number of
users.
BEA WebLogic
Provides JDBC, JMS, JVM, socket, servlet, and web application information about a Server
running BEA WebLogic. Some BEA WebLogic metrics include jvmRuntimeHeapFreeCurrent for the current amount of free memory in the JVM heap in bytes, and
webAppComponentRuntimeOpenSessionsCurrentCount for the current total number of
open sessions in this component.
RDBMS
Provides information about a server running a generic relational database management
system. Some RDBMS metrics include rdbmsSrvInfoPageReads for the number of physical
page reads that were completed after the RDBMS was last restarted, and
rdbmsSrvInfoPageWrites for the number of single page writes that were completed after
the RDBMS was last restarted.
Oracle
22-Jul-2016
1707/2016
Note: All SNMP MIBs are supported. The set of MIBs displayed in the Add SNMP Metric
dialog are only a sample of the MIBs that are supported. The Add SNMP Metric dialog
makes it easier to understand the Object IDs (OIDs) in those MIBs. However, any valid OID
works, not only those OIDs that are displayed in the Add SNMP Metric dialog. A set of all
the standard MIBs from IETF and IANA are provided. Those MIBs are stored in the
LISA_HOME\snmp\ietf and LISA_HOME\snmp\iana directories.
JMX Metrics
The JMX metrics use the Java Management Extension (JMX) API to provide metrics.
These JMX connectors are provided for an easy setup:
Any JSR 160 RMI connection
JBoss 3.2-4.0
JSE 5 Connector
Oracle AS (OCJ4)
22-Jul-2016
1708/2016
b.
Enter the username and password (principal and credentials) needed for the
authentication.
c.
Enter the JAAS login module that will authenticate these credentials.
6. Click OK.
The JMX Object Attribute Viewer opens.
22-Jul-2016
1709/2016
6.
On the left is the JMX Domain hierarchy for JBoss. JMX metrics use an object-attribute model.
In this model, domain objects are published by the specific application server (for example,
"system"), and attributes are name/value pairs inside the object.
When you select an object from this tree, then the base attributes of that object are also
displayed in the tree. After you select a base attribute, the rest of the attribute name appears
in the list in the top right Object Attribute panel.
In the previous example, we selected the domain object to be jboss.system, the base attribute
to be ServerInfo, and the rest of the attribute name to be FreeMemory. The attributes for
ServerInfo are displayed in the Object Attribute panel.
7. To select one of these attributes (metrics), select the metric, and click Add
.
This metric is added to the list of selected metrics in the Selected Attributes to Monitor panel
at the bottom of the window.
To remove an attribute from this panel, click Delete
8. Repeat this process until all of your chosen metrics appear in your list (bottom panel).
9. Click OK to return to the main metrics panel.
Notice that the JMX metrics are now on the list of metrics.
Depending on the application server, vendor-specific JARs could be required to enable the
JMX communication with that application server.
10. Similarly, you can also select the JSE 5 Connector from the JMX Connector list.
11. Click OK to connect to the JMX Agent.
22-Jul-2016
1.
1710/2016
1711/2016
Note: It takes a few minutes for TIBCO Hawk to initialize itself and achieve a ready state
where it can report metrics. TIBCO notifies DevTest when this ready state is achieved. It is
important to set lisa.net.timeout.ms to a fairly high value (at least 2-3 minutes) to avoid
timeouts when using staging documents that collect the TIBCO Hawk metrics.
22-Jul-2016
1712/2016
Note: If you are collecting Perfmon metrics for remote computers, ensure the Remote
Registry service is running. This service does not run by default on Windows 7 or Windows
8. You must manually start the Remote Registry service from the Windows Services
Manager.
1713/2016
22-Jul-2016
1714/2016
An OSX command parser for iostat that collects CPU and disk0 metrics
In the Specify Remote Machine details window, enter the operating system: Linux, OS X, or Solaris.
Enter the remote computer details:
Host
User
Select authentication type and enter information:
Password
Private Key
Encrypted Private Key
When you use a private key or an encrypted private key, the private key file must be in PEM format
and in the Data folder under the project. Use Browse to select the file.
Each operating system has a slightly different set of metrics from which to select. To select the
metrics you would like to collect, use the check box in the left column.
22-Jul-2016
1715/2016
Property Descriptions
This section describes each property in the following files:
DevTest Property File (lisa.properties) (see page 1716)
Custom Property Files (see page 1749)
Local Properties File (see page 1750)
Site Properties File (see page 1769)
logging.properties (see page 1773)
Enterprise Dashboard Properties (dradis.properties) (see page 1778)
Note: Do not add your custom properties to this file. CA Technologies reserves the right to
replace this file at any time.
To open the lisa.properties file, select System, Edit Properties from the main menu.
This section contains the following pages :
Enterprise Dashboard Properties (see page 1717)
Comma-Separated List of Paths for Javadoc and Source Code (see page 1717)
System Properties (see page 1718)
Server Properties (see page 1718)
OS X Properties (see page 1718)
Update Notifications (see page 1719)
Basic Defaults (see page 1719)
HTTP Header Keys Properties (see page 1720)
HTTP Field Editor Properties (see page 1721)
Test Case Execution Parameters (see page 1722)
TestEvent Handling Customizations (see page 1723)
Test Manager/Editor Properties (see page 1723)
J2EE Server Parameters (see page 1725)
Native Browser Information to Use for Internal Rendering (see page 1726)
Test Manager/Monitor Properties (see page 1727)
Built-In String-Generator Patterns (see page 1727)
22-Jul-2016
1716/2016
22-Jul-2016
1717/2016
System Properties
file.encoding
Encoding for files that DevTest reads or writes.
Default: UTF-8
lisa.supported.html.request.encodings
To include the encodings to support in the HTTP/HTML Request step, change the commaseparated list. The underlying JVM must also support all encodings in this list. If a webpage uses
an encoding that is not supported in the list, then the encoding is replaced with the DevTest
default encoding (file.encoding key in lisa.properties). Also, if an encoding is not selected when
creating a HTTP/HTML Request step, then the DevTest default encoding is assumed.
Default: ISO-8859-1, UTF-8, Shift_JIS, EUC-JP
lisa.supported.jres
Default: 1.7
org.jfree.report.LogLevel
Default: Error
javax.xml.parsers.DocumentBuilderFactory
Default: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
javax.xml.parsers.SAXParserFactory
Default: org.apache.xerces.jaxp.SAXParserFactoryImpl
javax.xml.transform.TransformerFactory
Default: org.apache.xalan.processor.TransformerFactoryImpl
beanshell.script.default.imports
Defines imports that should always be available in a BeanShell Java script.
Format: Enter class and package names, delimited with commas.
Packages must end with ".*" to be recognized as packages.
For example, in the following string, two classes and two packages would be imported:
beanshell.script.default.imports=com.ca.sv (http://com.ca.sv).devtest.util.
GenerateString,org.slf4j.*,com.itko.lisa.core.helpers.MobileHelper,com.itko.util.*
Server Properties
lisa.net.bindToAddress
The IP address that we listen on. By default, we listen on all our IP addresses. You can restrict this
value to a specific IP address. To prevent other computers connecting but allow local connections,
set the value to 127.0.0.1 or localhost.
OS X Properties
apple.awt.brushMetalLook
Default: false
apple.awt.brushMetalRounded
Default: false
apple.laf.useScreenMenuBar
22-Jul-2016
1718/2016
Update Notifications
lisa.update.every=1
Controls how often DevTest checks to see whether a newer version is available to download. To
disable checking, set the value to blank. The other valid values are:
0 (check at every startup)
1 (check once a day)
2 (check every two days), and so on.
lisa.update.URL=http://www.itko.com/download/ga/
Basic Defaults
lisa.registryName=registry
Default name of the registry to attach to, and the default name of the registry when you start it
without a name.
lisa.coordName=coordinator
The coordinator server default name when started without an explicit name AND when the Test
Runner needs one and you do not specify a coordinator server on the command line.
lisa.simulatorName=simulator
The default name of a simulator daemon if you do not provide one on the command line.
lisa.vseName=VSE
The virtual environment server default name when started without an explicit name.
lisa.defaultRegistry.pulseInterval=30
22-Jul-2016
1719/2016
22-Jul-2016
1720/2016
22-Jul-2016
1721/2016
22-Jul-2016
1722/2016
Set this property to true when opening a test case in DevTest 7.1.1 or later that has an HTTP/HTML
Request step that was created in 7.0.0 or earlier.
1723/2016
22-Jul-2016
1724/2016
JBOSS=org.jnp.interfaces.NamingContextFactory
Weblogic=weblogic.jndi.WLInitialContextFactory
Websphere=com.ibm.websphere.naming.WsnInitialContextFactory
Borland Enterprise Server=com.inprise.j2ee.jndi.CtxFactory
iPlanet/Sun AS=com.sun.jndi.cosnaming.CNCtxFactory
lisa.prefill.jndiUrlPrefix=
JBOSS=jnp://
Weblogic=t3://
Websphere=iiop://
Borland Enterprise Server=iiop://
iPlanet/Sun AS=iiop://
lisa.prefill.jndiDefPort=
JBOSS=1099
Weblogic=7001
Websphere=2809
Borland Enterprise Server=1099
iPlanet/Sun AS=1099
lisa.prefill.jndiNeedsClass=
JBOSS=false
Weblogic=false
Websphere=true
Borland Enterprise Server=true
iPlanet/Sun AS=true
lisa.prefill.jndiFactories=
org.jnp.interfaces.NamingContextFactory
weblogic.jndi.WLInitialContextFactory
com.ibm.websphere.naming.WsnInitialContextFactory
com.webmethods.jms.naming.WmJmsNamingCtxFactory
com.tibco.tibjms.naming.TibjmsInitialContextFactory
com.inprise.j2ee.jndi.CtxFactory
com.sun.jndi.cosnaming.CNCtxFactory
fiorano.jms.runtime.naming.FioranoInitialContextFactory
lisa.prefill.jndiServerURLs=
jnp://SERVER:1099&t3://SERVER:7001
iiop://SERVER:PORT
tibjmsnaming://SERVER:7222&iiop://SERVER:PORT
iiop://localhost:9010&wmjmsnaming://Broker #1@SERVER:PORT
/JmsAdminTest
lisa.editor.URLTransEditor.
protos=
http,https
lisa.editor.URLTransEditor.
hosts=
lisa.editor.URLTransEditor.
ports=
80,443
lisa.editor.URLTransEditor.files=
lisa.prefill.jdbc.names=
22-Jul-2016
Oracle
SQL Server
WLS Oracle
JDataStore
1725/2016
oracle.jdbc.driver.OracleDriver
com.microsoft.sqlserver.jdbc.SQLServerDriver
com.microsoft.jdbc.sqlserver.SQLServerDriver
weblogic.jdbc.oci.Driver
com.borland.datastore.jdbc.DataStoreDriver
com.sybase.jdbc.SybDriver
com.ibm.db2.jcc.DB2Driver
org.gjt.mm.mysql.Driver
org.apache.derby.jdbc.ClientDriver
lisa.prefill.jdbc.
jdbcConnectionURLs=
jdbc:oracle:thin:@SERVER:1521:SIDNAME
jdbc:sqlserver://SERVER:PORT;databasename=DBNAME
jdbc:microsoft:sqlserver://SERVER:PORT
jdbc:weblogic:oracle:TNSNAME
jdbc:borland:dslocal:DBNAME
jdbc:sybase:Tds:SERVER:PORT/DBNAME
jdbc:db2://SERVER:PORT/DBNAME
jdbc:mysql://SERVER:PORT/DBNAME
jdbc:derby://DBSERVER:DBPORT/DBNAME
22-Jul-2016
1726/2016
JMX Information
lisa.jmx.types
com.itko.lisa.stats.jmx.JSE5Connection
com.itko.lisa.stats.jmx.TomcatConnection
com.itko.lisa.stats.jmx.JBossConnection
com.itko.lisa.stats.jmx.JSR160RMIConnection
com.itko.lisa.stats.jmx.WeblogicConnector
com.itko.lisa.stats.jmx.Weblogic9Connector
com.itko.lisa.stats.jmx.WebsphereSOAPConnection
com.itko.lisa.stats.jmx.ITKOAgentConnection
com.itko.lisa.stats.jmx.OracleASConnector
lisa.jmx.typeprops
com.itko.lisa.stats.jmx.JSE5Connection=LISA_JMX_JSE5
com.itko.lisa.stats.jmx.TomcatConnection=LISA_JMX_TOMCAT5
com.itko.lisa.stats.jmx.JBossConnection=LISA_JMX_JBOSS3240
com.itko.lisa.stats.jmx.JSR160RMIConnection=LISA_JMX_JSR160RMI
com.itko.lisa.stats.jmx.Weblogic9Connector=LISA_JMX_WLS9
com.itko.lisa.stats.jmx.WeblogicConnector=LISA_JMX_WLS6781
com.itko.lisa.stats.jmx.OracleASConnector=LISA_JMX_OC4J
com.itko.lisa.stats.jmx.WebsphereSOAPConnection=LISA_JMX_WASSOAP5X
com.itko.lisa.stats.jmx.ITKOAgentConnection=LISA_JMX_ITKOAGENT
22-Jul-2016
1727/2016
LISA_JMX_TOMCAT5
This parameter is for Tomcat.
Default: LISA_HOME/lib/mx4j.lib{{path.separator}}LISA_HOME/hotDeploy/mx4j-tools.jar
LISA_JMX_WLS9
Default: LISA_HOME/hotDeploy/weblogic.jar{{path.separator}}LISA_HOME/hotDeploy
/wljmxclient.jar
LISA_JMX_WLS6781
This parameter must change to the location of your weblogic.jar. No wlclient.jar will not work.
Default: LISA_HOME/hotDeploy/weblogic.jar
Oracle AS
LISA_JMX_OC4J
Default: LISA_HOME/lib/oc4jclient.jar{{path.separator}}LISA_HOME/lib/adminclient.jar
IBM WebSphere
LISA_JMX_WASSOAP5X
It is easier to use your IBM/WAS CLASSPATH before you start DevTest and leave this blank.
Default: LISA_HOME/lib/mx4j.lib
lisa.alert.email.emailAddr
If you use performance monitoring alerts, this parameter is the "from" email address for those
alerts.
Format: lisa@itko.com
lisa.alert.email.defHosts
This parameter is the email server that we try to route emails with (SMTP server).
Default: localhost
lisa.rundoc.builtins
Values:
com.itko.lisa.files.1user1cycle.stg
Run the test case once with one simulated user
com.itko.lisa.files.1user1cycle0think.stg
Run the test case once with one simulated user and no think time
com.itko.lisa.files.1user1min.stg
Run the test case with one simulated user for one minute, restarting the test as needed
com.itko.lisa.files.1user5min.stg
Stage the test for 5 minutes, restarting as needed
com.itko.lisa.files.1usernonstop.stg
Execute this test until manually stopped
com.itko.lisa.files.5user1min.stg
Execute this test with 5 virtual users for 1 minute
lisa.auditdoc.builtins
22-Jul-2016
1728/2016
Testing Parameters
lisa.props.blankOnMissing=true
Property to use if you want DevTest to replace key with an empty string if key is not in state.
lisa.test.custevents=&101="Custom Event 101"; &102="Custom Event 102"
Custom events: the first allowed event number is 101, so we have registered two as examples here.
lisa.SimpleWebFilter.responseCodeRegEx=[45] d d
lisa.fsss.dateformat=MM/dd/yyyy hh:mm:ss a
22-Jul-2016
1729/2016
lisa.tm.exec.osx
Default: open -a /Applications/Utilities/Terminal.app {0}
Properties Used by Swing Testing Support
lisa.swingtest.client.logging.properties.file
Uncomment to use a custom Log4J logging properties file in SwingTestProgramStarter.
Default: C:/Lisa/swingtestclient-logging.properties
License Settings
laf.request
Default: laf/license.do
laf.default.url
Default: https://license.itko.com
laf.displaysetting
Default: true
Reporting Properties
lisa.reporting.defaultPageSize
Values: A4 | letter
Reporting JPA Properties
rpt.eclipselink.ddl-generation
Default: create-tables
rpt.eclipselink.ddl-generation.output-mode
Default: database
rpt.eclipselink.validateschema
Default: false
perfmgr.rvwiz.whatrpt.autoExpire
Default: true
perfmgr.rvwiz.whatrpt.expireTimer
To check for expired reports, set autoExpire = true. Set the expiration period: an integer followed
by (m=month,w=week,d=day,h=hour). The default expiration period is 30d (30 days).
Default: 30d
rpt.hibernate.validateschema
Validate the report database schema. By default, only the registry validates the schema.
Default: false
lisa.0.registry.local.autoshutdown
Default: true
lisa.8.registry.local.autoshutdown
Default: true
22-Jul-2016
1730/2016
lisa.10.registry.local.autoshutdown
The default behavior is to not automatically shut down the local registry if it was started
automatically. The exceptions are DevTest Workstation, VSE, and VSE Workstation.
Default: true
lisa.4.registry.local.autoshutdown
Default: false
lisa.5.registry.local.autoshutdown
JUnit and TestRunner should never auto shutdown the registry.
Default: false
Property Used for the Eclipse Connector
lisa.eclipse.connector.port
Default: 8546
Property Used for Example Test Suites
EXAMPLES_HOME
Default: LISA_HOME/examples
VSE Properties
lisa.magic.string.min.length
Defines the minimum length of the argument value in a VSE transaction request that is required
to consider that argument for constructing a magic string.
Default: 3
lisa.magic.string.word.boundary.type
Defines how searches in VSE for magic string content relate to word boundaries.
Values:
none: The word boundaries do not matter
start: Magic string candidates must start on a word boundary
end: Magic string candidates must end on a word boundary
both: Magic string candidates must be found as whole words; that is, a word boundary on
both ends
Default: both
lisa.magic.string.exclusion
Specifies whether to exclude specific strings from eligibility for magic stringing.
Values: Yes, YES, yes, No, NO, no, true, True, TRUE, false, False, FALSE, __NULL
Default: Yes, YES, yes, No, NO, no, true, True, TRUE, false, False, FALSE, __NULL
lisa.magic.string.xml.tags
Specifies whether to change text in XML tags to magic strings.
Default: false
22-Jul-2016
1731/2016
22-Jul-2016
1732/2016
lisa.vse.rest.max.optionalqueryparams
Specifies the maximum number of optional query parameters to use per method in a WADL,
Swagger, or RAML file. If there are more than lisa.vse.rest.max.optionalqueryparams optional
query parameters specified in one of these files, only the first lisa.vse.rest.max.
optionalqueryparams are used to create transactions.
Default: 5
Date-Checker Properties
The VSE date utilities use the following properties to determine which date patterns are considered
valid for date sensitivity conversions. Each of the following entries represents a regular expression
that VSE considers as a part of a date.
lisa.vse.datechecker.dayregex
((\[12\]\\d)\|(3\[01\])\|(0?\[1-9\]))
lisa.vse.datechecker.monthnumberregex
((1\[012\])\|(0 \\d)\|0\[1-9\]\|\[1-9\])
lisa.vse.datechecker.monthalpharegex
(\\bJAN\\b\|\\bFEB\\b\|\\bMAR\\b\|\\bAPR\\b\|\\bMAY\\b\|\\bJUN\\b\|\\bJUL\\b\|\\bAUG\\b\|\\bSEP\\b\|\\b
\\b)
lisa.vse.datechecker.yearlongregex
\\d\\d\\d\\d
lisa.vse.datechecker.yearshortregex
\\d\\d
lisa.vse.datechecker.timeregex
(\\s?((\[012\]? \\d)\|(2\[0123\]))\:((\[012345\] \\d)\|(60))\:((\[012345\] \\d)\|(60)))
lisa.vse.datechecker.time.hhmmssregex
((\[012\]? \\d)\|(2\[0123\]))\:((\[012345\] \\d)\|(60))\:((\[012345\] \\ d)\|(60))
lisa.vse.datechecker.time.millisregex
((\[012\]?\\d)\|(2\[0123\]))\:((\[012345\]\\d)\|(60))\:((\[012345\]\\d)\|(60))\\.(( \\d \\d \\d)\|0)
lisa.vse.datechecker.time.millis.zoneregex
((\[012\]?\\d)\|(2\[0123\]))\:((\[012345\] \\d)\|(60))\:((\[012345\] \\ d)\|(60)) \\.((\\d \\d \\d)
\|0) \\s(\[A-Za-z\]\[A-Za-z\]\[A-Za-z\])
lisa.vse.datechecker.wstimestampregex
\\d\\d\\d\\d-((1\[012\])\|(0\\d)\|0\[1-9\]\|\[1-9\])-((\[12\]-\\-d)\|(3\[01\])\|(0?\[1-9\]))T((\
[012\]?-\\-d)\|(2\[0123\]))\:((\[012345\]-\\-d)\|(60))\:((\[012345\]-\\-d)\|(60))-\\-.-\\-d-\\-d-\\-d\
[-+\]\\d\\d\\d \\d
lisa.vse.datechecker.ddmmmyyyyregex
((\[12\]\\d)\|(3\[01\])\|(0?\[1-9\]))
(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)\\d \\d \\d \\d
22-Jul-2016
1733/2016
lisa.vse.datechecker.mmmddyyyyregex
(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)((\[12\]\\d)\|(3\[01\])\|
(0?\[1-9\]))\\d \\d \\d \\d
lisa.vse.datechecker.yyyyddmmmregex
\\d\\d \\d \\d((\[12\] \\d)\|(3\[01\])\|(0?\[1-9\]))
(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)
lisa.vse.datechecker.yyyymmmddregex
\\d\\d\\d\\d(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)((\[12\] \\d)
\|(3\[01\])\|(0?\[1-9\]))
lisa.vse.datechecker.ddmmmregex
((\[12\]\\d)\|(3\[01\])\|(0?\[1-9\]))
(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)
lisa.vse.datechecker.mmmddregex
(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)((\[12\]\\d)\|(3\[01])|
(0?\[1-9\]))
lisa.vse.datechecker.ddmmmyyregex
((\[12\]\\d)\|(3\[01\])\|(0?\[1-9\]))
(JAN\|FEB\|MAR\|APR\|MAY\|JUN\|JUL\|AUG\|SEP\|OCT\|NOV\|DEC)\\d\\d
In VSE, each of the following entries represents a valid pattern for part of date:
lisa.vse.datechecker.dayformat
Format: dd
lisa.vse.datechecker.monthnumberformat
Format: MM
lisa.vse.datechecker.monthalphaformat
Format: MMM
lisa.vse.datechecker.yearlongformat
Format: yyyy
lisa.vse.datechecker.yearshortformat
Format: yy
lisa.vse.datechecker.timeformat
Format: HH:mm:ss
lisa.vse.datechecker.time.hhmmssformat
Format: HH:mm:ss
lisa.vse.datechecker.time.millisformat
Format: HH:mm:ss.SSS
22-Jul-2016
1734/2016
lisa.vse.datechecker.time.millis.zoneformat
Format: HH:mm:ss.SSS z
lisa.vse.datechecker.wstimestampformat
Format: yyyy-MM-dd'T'HH:mm:ss.SSSZ
The following date patterns cannot be constructed by using a combination for the previous patterns
that involve at least day, month, and year:
lisa.vse.datechecker.mmmddyyyy.separatorformat
Format: MMM*dd*yyyy
lisa.vse.datechecker.mmddyyyy.separatorformat
Format: MM*dd*yyyy
lisa.vse.datechecker.ddmmmyyyy.separatorformat
Format: dd*MMM*yyyy
lisa.vse.datechecker.ddmmyyyy.separatorformat
Format: dd*MM*yyyy
lisa.vse.datechecker.yyyymmmdd.separatorformat
Format: yyyy*MMM*dd
lisa.vse.datechecker.yyyymmdd.separatorformat
Format: yyyy*MM*dd
lisa.vse.datechecker.ddmmmyyyyformat
Format: ddMMMyyyy
lisa.vse.datechecker.mmmddyyyyformat
MMMddyyyy
lisa.vse.datechecker.yyyyddmmmformat
Format: yyyyddMMM
lisa.vse.datechecker.yyyymmmddformat
Format: yyyyMMMdd
lisa.vse.datechecker.ddmmmyyformat
Format: ddMMMyy
lisa.vse.datechecker.ddmmmformat
Format: ddMMM
lisa.vse.datechecker.mmmddformat
Format: MMMdd
22-Jul-2016
1735/2016
lisa.vse.datechecker.separators
Defines the valid separator characters to use in the date formats.
Values: -/.
Example: lisa.vse.datechecker.separators=/ sets / as a separator as in 10/15/2011.
lisa.vse.datechecker.top.priorityorder=lisa.vse.datechecker.wstimestampformat
Defines the order in which to match the date pattern. The separator characters that lisa.vse.
datechecker.separators defines replace the asterisks.
Example: MM*dd*yy generates four date patterns: "MM-dd-yyyy", "MM dd yyyy", "MM/dd
/yyyy", "MM.dd.yyyy".
lisa.vse.datechecker.date.priorityorder
lisa.vse.datechecker.mmmddyyyy.separatorformat&\
lisa.vse.datechecker.mmddyyyy.separatorformat&\
lisa.vse.datechecker.ddmmmyyyy.separatorformat&\
lisa.vse.datechecker.ddmmyyyy.separatorformat&\
lisa.vse.datechecker.yyyymmmdd.separatorformat&\
lisa.vse.datechecker.yyyymmdd.separatorformat&\
lisa.vse.datechecker.mmmddyyyyformat&\
lisa.vse.datechecker.ddmmmyyyyformat&\
lisa.vse.datechecker.yyyyddmmmformat&\
lisa.vse.datechecker.yyyymmmddformat&\
lisa.vse.datechecker.ddmmmyyformat
lisa.vse.datechecker.time.priorityorder
lisa.vse.datechecker.time.millis.zoneformat&\
lisa.vse.datechecker.time.millisformat&\
lisa.vse.datechecker.time.tenthsformat&\
lisa.vse.datechecker.time.hhmmssformat
lisa.vse.datechecker.mmmddformat&\
lisa.vse.datechecker.ddmmmformat
lisa.vse.datechecker.months
Values: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
lisa.vse.datechecker.coarse.year.regex
Format: (?ism).*((\\d[./-](19|20)[0-9]{2})|
((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)[. /-](19|20)[0-9]{2})|((19|20)[0-9]{2}
[. /-][0-9]{2})).*
Defines a coarse level test to determine whether the payload contains anything that resembles a
year. To avoid matching too much, it looks nearby for other identifying information such as month
information and common date separators (for example, - or / or .).
When the year is difficult to distinguish from any other four-digit number, this pattern may not
match. In that case, your magic dates are not found. Try one of the following solutions:
Tweak this RegEx
22-Jul-2016
1736/2016
1737/2016
1738/2016
1739/2016
1740/2016
1741/2016
22-Jul-2016
1742/2016
lisa.reporting.step.max.propsset.buffersize
These properties control the collection of statistics for a test step during the execution of a test
case. The values specify the maximum number of occurrences that are recorded for the
properties that are used and properties that are set. You should not need to change the default
values.
Default: 100
lisa.threadDump.generate
Default: true
lisa.threadDump.interval
Default: 30
lisa.threadDump.loggerName
Enable periodic thread dumps. It is a good idea to leave this property enabled. It efficiently checks
to see if the threadDumpLogger is at INFO or below and not do anything if it is set to WARN or
higher. Properties are only read once at startup; the logging.properties file is checked every 10
seconds for changes. All that you must do is leave this property alone and set the log level of the
threadDumpLogger to INFO and wait for at most 30 seconds to get periodic thread dumps of a
running DevTest Server. These logs are invaluable when debugging performance issues. See the
comments in logging.properties for more information.
Default: threadDumpLogger
These properties are used to control the metrics collection in VSE servers.
lisa.vse.metrics.collect
Main property to turn on the overall metrics collection (true) or off (false).
Default: true
lisa.vse.metrics.txn.counts.level
This property controls the level at which transaction counts are recorded. When the named
transaction counts are summed, you get transactions for any time period.
Values: none (or false), service, operation, arguments
Service: The name of the service names transaction counts
Operation: The service name plus the request operation names transaction counts
Arguments: The service name plus the request operation names transaction counts plus a list
of request arguments
Default: service
lisa.vse.metrics.sample.interval
This property controls how often transaction rate and response times are sampled.
Default: 5m
lisa.vse.metrics.delete.cycle
Default: 1h
22-Jul-2016
1743/2016
lisa.vse.metrics.delete.age
These properties control how often old metric data is scanned for and deleted, and what is
considered old.
Default: 30d
lisadb.internal.enabled
Indicates whether to start the internal Derby database instance in the registry.
Default: true
lisadb.internal.host
The network interface that the internal Derby database uses. The default value 0.0.0.0 indicates
that all interfaces are used.
Default: 0.0.0.0
lisadb.internal.port
The port number that the internal Derby database listens on.
Default: 1528
lisa.acl.audit.logs.delete.frequency
Default: 1d
lisa.acl.audit.logs.delete.age
These properties control how often old ACL audit log data is scanned for and deleted, and what is
considered old.
Default: 30d
Database Properties
The following components interact with a database: reporting, Agent broker, VSE, and ACL. Typically
you would point them all to the same connection pool, but you can define a separate pool for each or
mix and match. To define a new pool, set up properties like lisa.db.pool.myPool.url. The underlying
pool implementation is the open source c3p0 pool, and the various properties are passed down. For
available settings, see http://www.mchange.com/projects/c3p0/index.html#configuration_properties
.
lisadb.reporting.poolName
Default: common
lisadb.acl.poolName
Default: common
lisadb.broker.poolName
Default: common
lisadb.pool.common.driverClass
Default: org.apache.derby.jdbc.ClientDriver
lisadb.pool.common.url
Default: jdbc:derby://localhost:1528/database/lisa.db;create=true
lisadb.pool.common.user
Default: rpt
22-Jul-2016
1744/2016
22-Jul-2016
1745/2016
lisa.jdbc.asset.pool.size
When defining a JDBC Connection asset, this property configures the connection pool size.
Default: 5
Mainframe Properties
lisa.mainframe.bridge.enabled
Indicates whether to enable the CICS mainframe bridge.
Default: false
lisa.mainframe.bridge.mode
Indicates whether the mainframe bridge runs in client mode or server mode.
Default: server
lisa.mainframe.bridge.port
When the mainframe bridge is running in server mode, this port is the well-known port that the
mainframe bridge listens on.
Default: 61617
lisa.mainframe.bridge.server.host
Default: 127.0.0.1
lisa.mainframe.bridge.server.port
When the mainframe bridge is running in client mode, these values are the IP address and the
well-known port of the LPAR agent.
Default: 3997
lisa.mainframe.bridge.connid
Two-character unique ID for each client.
Default: AA
WebSphere MQ Properties
lisa.mq.ccsid.default=819
You can use this property to override the default Coded Character Set Identifier (CCSID) for all IBM
WebSphere MQ messages sent from DevTest. This value can also be overridden for each case in the
Publisher Info's Message Properties of the IBM WebSphere MQ (see page 1919) step. For more
information, see Using CA Application Test. For the complete list of CCSIDs, see http://www-01.ibm.
com/software/globalization/ccsid/ccsid_registered.html. The default value for United States locales is
819 (ASCII).
Localization Options
lisa.locale.languages=en
You can use this property to indicate the languages to support in the UI. The valid values are en and ja
, indicating English or Japanese.
If you specify both en and ja here, you can switch the UI between English and Japanese by using the
System, Language option off the Main menu.
lisa.supported.html.request.encodings=
22-Jul-2016
1746/2016
Note: If this property is not specified, the test runs in Firefox by default.
selenium.ie.driver.path
Defines the full path to the Selenium driver on a local computer that is used to run a Selenium
Integration test in a Microsoft Internet Explorer browser. Use this property in a project
configuration file.
Example:
C:\lisa-se\IEDriverServer.exe
selenium.chrome.driver.path
Defines the full path to the Selenium driver on a local computer that is used to run a Selenium
Integration test in a Chrome browser. Use this property in a project configuration file.
Example:
C:\lisa-se\ChromeDriverServer.exe
selenium.remote.url
Defines the URL of a remote Selenium Server hub to run Selenium Integration test cases on a
remote browser. Use this property in a project configuration file.
22-Jul-2016
1747/2016
selenium.WebDriver.DesiredCapabilities.filePath
Specifies the location of the parameter file that is used to set advanced options in the Selenium
web driver.
VSEasy Properties
The port properties control the dynamic assignment of ports when using auto configuration with the
HTTP protocol in VSEasy (see page 728).
If the minimum port is less than 1024, the value is set to 1024.
If the maximum port is greater than 65535, the value is set to 65535.
If the maximum port is less than or equal to the minimum port, both values are reverted to the
defaults.
lisa.vseasy.http.min.dynamic.port
Default: 8000
lisa.vseasy.http.max.dynamic.port
Default: 65535
lisa.vseasy.default.group.tag
Specifies the name of the default virtual service group.
Default: VSEasy
Solr Properties
CAI uses Apache Solr for its search functionality.
lisa.pathfinder.solr.syncUpHour
Specifies when Apache Solr synchronizes with the database. The value represents the hour. For
example, the default value indicates 2 o'clock in the morning.
Default: 2
lisa.pathfinder.solr.batchSize
Specifies how many rows to retrieve from the database at a time. We recommended that you
leave the value blank, as JDBC uses its default value. For most JDBC drivers, the default value is
500.
22-Jul-2016
1748/2016
Note: When DevTest Workstation is started, you are prompted to connect to a registry.
After the registry is connected, a site.properties is sent to the workstation. If you switch the
registry and change from Registry1 to Registry2, the site.properties from Registry2 is sent
to the workstation.
22-Jul-2016
1749/2016
More Information:
Local Properties File (see page 1750)
Site Properties File (see page 1769)
logging.properties (see page 1773)
Enterprise Dashboard Properties (see page 1778)
1750/2016
Autoconnection Properties
lisaAutoConnect
To load site-wide properties automatically from a DevTest registry, uncomment this property and
make it the right URL to your DevTest registry. The hostname/lisa.TestRegistry property usually
works. Your properties in this file override any properties that are defined at the site level.
To load site-wide properties from a DevTest registry automatically, uncomment this property and
make it the right URL to your DevTest registry. The hostname/lisa.TestRegistry usually works.
Your properties in this file override any properties that are defined at the site level for non-GUI
components.
DevTest Workstation does not use this property. You can select the registry that you want to
connect to with the Select Registry dialog or by the Change Registry button in the workstation. If
you disable the "prompt on startup" check box in the Select Registry dialog, then DevTest
Workstation connects to the last registry that it was using.
Format: tcp://somehost/Registry
License Properties
laf.server.url
Format: https://license.itko.com
laf.domain
Format: iTKO/LISA/YOURCO
laf.username
Format: YOURUSERNAME
laf.password
Format: YOURPASSWORD
VSE Properties
lisa.vse.deploy.dir
Lets you override the directory where run-time files are managed. Set this property to an
absolute directory path. If you do not start the path with a drive specification, it becomes relative
to LISA_HOME. If you are specifying a multilevel directory, specify in this format: C:
\\Temp\\myVSE.
Note: In properties files, you MUST double backslashes for them to be recognized.
lisa.vse.si.editor.prefer.xml
The valid values are the list of VSE SI text editor class names that are found in typemap.properties
assigned to the vseTextBodyEditors name. If you write a custom text editor and make it available
through standard SDK methods, that class name can also be a value for this property.
The following properties let VSE use old-style socket I/O rather than new I/O ("NIO"). Be aware of the
following restrictions when using old style socket support:
22-Jul-2016
1751/2016
lisa.vse.body.cache.weight
22-Jul-2016
1752/2016
Note: Depending on the type of error and model, the final error count can be greater than
the value set in lisa.vse.max.hard.errors. Shutting down the virtual service can take some
time. While the shutdown is in process, some types of errors can continue to increase.
22-Jul-2016
1753/2016
lisa.tcp.tcprecorder.close.immediately
Specifies if sockets are closed immediately at the end (or termination) of a TCP recording.
Both local (listen port) and remote sockets are affected.
If a socket read or write is in progress (if there is a long delay by server or client) and recording is
terminated, then this property specifies whether to close or to let the communication complete.
For long running conversations (for example, large file downloads) this property specifies whether
to terminate the conversation or let it run until the end.
Values: blank, true, and false. If the value is blank, the value defaults to true.
Default: true
lisa.vse.body.cache.size
Specifies the amount of memory that is set aside to cache the uncompressed body for VSE request
and response objects. Units are in MB.
Default: 10
lisa.vse.body.cache.timeout
Specifies the length of time cached uncompressed bodies of VSE requests and responses remain
in the cache. Units are in seconds.
Default: 60
lisa.vse.argument.match.allow.whitespace
This property tells VSE to allow leading or trailing whitespace, or both, on incoming request
arguments when matching to a service image. The default value is false, which causes VSE to strip
off leading and trailing whitespace on incoming request arguments before matching the request
to a service image.
Default: false
These properties define the IMS Connect message parameters for the protocol to use for recording
and playback purposes.
lisa.vse.protocol.ims.encoding
Default: EBCDIC
lisa.vse.protocol.ims.header.length
Default: 80
lisa.vse.session.timeout.ms
If an existing session cannot be found, VSE attempts to match the request against the starter
transactions of each conversation in the image. If a match is found, a new session is created and
the relevant response is returned. The session is maintained until 2 minutes after it has last been
"seen" by VSE. You can change this behavior by setting lisa.vse.session.timeout.ms. If no
conversation starters match, no session is created and the list of stateless transactions is
consulted in the order they are defined. If there is a match, the appropriate response is returned.
If there is still no match, the "unknown request" response is sent.
Default: 120000
lisa.vse.tcp.oldio.read.timeout
Controls the period that we wait for a TCP read to be satisfied before timing out and running retry
logic. Its default setting of 500 milliseconds is sufficient for "normal" or well-tuned networks
where network latency is not an issue. For networks experiencing delays longer than 1/2 a
second, you can set this property to allow the code to wait for a longer time before retrying. The
retry logic should be sufficient for communications on the TCP socket to be maintained at the loss
22-Jul-2016
1754/2016
22-Jul-2016
1755/2016
22-Jul-2016
1756/2016
Interconnectivity Properties
lisa.default.keystore
Default: {{LISA_HOME}}webreckeys.ks
lisa.default.keystore.pass
Default: passphrase
DevTest to DevTest communication encryption. Normally the network traffic is not encrypted. To use
encryption, we support SSL out of the box. Instead of naming your server endpoints with "tcp," name
them with "ssl" - for example: ssl://hostname:2010/Registry. You do not have to set any of the
following properties; simply naming the endpoints (and the server name) with SSL is enough. For
example, you can start a new simulator:
Simulator-namessl://thishost:2014/Simulator-labNamessl://regHost:2010/Registry
22-Jul-2016
1757/2016
SDK Properties
The DevTest SDK examples require:
asserts
Format: com.mycompany.lisa.AssertFileStartsWith
com.mycompany.lisa.AssertFileStartsWith
Format: com.itko.lisa.editor.DefaultAssertController,com.itko.lisa.editor.DefaultAssertEditor
filters
Format: com.mycompany.lisa.FilterFileFirstLine
com.mycompany.lisa.FilterFileFirstLine
Format: com.itko.lisa.editor.FilterController,com.itko.lisa.editor.DefaultFilterEditor
nodes
Format: com.mycompany.lisa.node.FTPTestNode
com.mycompany.lisa.node.FTPTestNode
Format: com.mycompany.lisa.node.FTPTestNodeController,com.mycompany.lisa.node.
FTPTestNodeEditor
22-Jul-2016
1758/2016
SSL Properties
Change the default behavior for validating the SSL certificates.
ssl.checkexpiry
A value of "true" says to validate the validity dates for the certificate.
Default: false
ssl.checkcrl
A value of "true" says to validate the cert revocation list that is specified in the certificate.
Default: false
Enable a client cert and password for SSL (used by HTTP step; also used by Web Service step if not
overridden).
ssl.client.cert.path
A full path to the keystore.
ssl.client.cert.pass
The password for the keystore. This password is automatically encrypted when DevTest runs.
ssl.client.key.pass
An optional password for the key entry if using a JKS keystore and key has a different password
from keystore. This password is automatically encrypted when DevTest runs.
Override the client certificate and password for SSL (ssl.client.cert.path and ssl.client.cert.pass) for
Web Service step.
ws.ssl.client.cert.path
A full path to the keystore.
ws.ssl.client.cert.pass
The password for the keystore. This password is automatically encrypted when DevTest runs.
ws.ssl.client.key.pass
An optional password for the key entry if using a JKS keystore and key has a different password
from keystore. This password is automatically encrypted when DevTest runs.
Use a custom keystore when acting as the SSL server during VSE recording and playback (Listen Step).
ssl.server.cert.path
A full path to the SSL server keystore file.
ssl.server.cert.pass
The password for the SSL server keystore. When DevTest runs, this password is automatically
encrypted as a new property named ssl.server.cert.pass.encrypted.
lisa.ssl.reuse.session
22-Jul-2016
1759/2016
If you are reusing the same socket (for example, within the same test it reuses sockets) DevTest
creates a new session.
Default: false
22-Jul-2016
1760/2016
lisa.http.webProxy.nonProxyHosts
The machine name or IP address to exclude from proxy authentication. To enter multiple values,
delimit values with pipes ( | ). Use * as a wildcard.
Default: 127.0.0.1
lisa.http.webProxy.port
lisa.http.webProxy.ssl.host
The machine name or IP address.
lisa.http.webProxy.ssl.nonProxyHosts
The machine name or IP address to exclude from SSL proxy authentication. To enter multiple
values, delimit values with pipes ( | ). Use * as a wildcard.
Default: 127.0.0.1
lisa.http.webProxy.ssl.port
Leave blank to use integrated NTLM authentication.
lisa.http.webProxy.host.domain
Used for NTLM authentication.
lisa.http.webProxy.host.account
lisa.http.webProxy.host.credential
lisa.http.webProxy.nonProxyHosts.excludeSimple
Exclude simple host names from proxy use.
Default: true
lisa.http.webProxy.preemptiveAuthenticationType
Preemptively send authorization information rather than waiting for a challenge.
Values: basic, ntlm
Default: ntlm
lisa.http.timeout.connection
HTTP Timeout (in milliseconds) - To extend the timeout to wait indefinitely, set the values to zero.
Default: 15000
lisa.http.timeout.socket
HTTP Timeout (in milliseconds). To extend the timeout to wait indefinitely, set the value to zero.
Default: 180000
22-Jul-2016
1761/2016
IP Spoofing
lisa.ipspoofing.interfaces=2-34-56-78-90-AB, eth0, Realtek PCIe GBE Family Controller
Interfaces: a comma-separated list of interfaces that is used for the IP spoofing. These interfaces can
be named using the MAC address (JDK 1.6+), interface name, or interface display name.
lisa.ui.useNativeFileDialog=true
Force the use of a native file dialog.
22-Jul-2016
1762/2016
lisa-invoke Properties
lisa.portal.invoke.base.url
Default: /lisa-invoke
lisa.portal.invoke.report.url
Default: /reports
lisa.portal.invoke.server.report.directory
Default: lisa.tmpdirlisa.portal.invoke.report.url
lisa.portal.invoke.test.root
Default: d:/lisatests/
22-Jul-2016
1763/2016
JMS Properties
The string-value is often supplied by a data set such as the Unique Code Generator.
lisa.jms.correlation.id
A run-time value that sets the JMSCorrelationID for an outgoing JMS message.
Value: string-value
lisa.jms.ttl.milliseconds
A run-time value that sets the time-to-live for an outgoing JMS message.
Value: num-value
jms.always.close.jndi
A value of true auses the JMS step to always close the JNDI context at the end of its execution.
Values: true, false
22-Jul-2016
1764/2016
Miscellaneous Properties
lisa.coord.failure.list.size
If too many errors are reported in a test, the coordinator uses up all its available heap space.
When the heap space is used up, DevTest Server must be restarted. This situation is bad if
multiple tests are running, and one test gets staged and throws nothing but errors. This property
limits the size of the coordinator failure list.
Default: 15
testexec.lite.longMsgLen
To view the full text of long responses, set this property to the length of your longest response.
Run your test, capture what you need, verify that the correct response is indeed being sent back,
and then comment out the added line in the local.properties file to revert to the default length.
Default: 1024
java.rmi.server.hostname
Forces the communication through a specific NIC on the computer.
Value: IP address of selected NIC
lisa.xml.xpath.computeXPath.alwaysUseLocalName
This property configures whether the XPath local-name() function is always used during XPath
generation. The default value is false, meaning that the local-name() is only used when necessary.
To generate an XPath that works regardless of the namespace of an XML node, set the value of
this property to true.
Default: false
lisa.commtrans.ctstats
To capture the information that is necessary to populate the Cumulative HTTP Traffic Summary
report, enter this property into one of the custom property files.
Default: true
gui.viewxml.maxResponseSize
The property to designate the size at which the view of an XML response in an editor or in the ITR
is plain and no DOM view is provided.
Default: 5 MB
rpt.cleaner.initDelayMin
Default: 10
rpt.cleaner.pulseMin
These properties were added to make the report cleanup thread run more often. The first is the
initial delay, in minutes, before the cleaner starts. The second is the time between runs, in
minutes.
Default: 60
lisa.LoadHistoryWriteSupport.max.errors
Set to limit the number of errors that are reported to prevent the report generator from backing
up.
Default: 50
22-Jul-2016
1765/2016
lisa.metric.initialization.timeout
Initialization of the Metric Collector occurs during the staging of the test/suite and the test/suite
does not start until the collectors are initialized. The default value of 90000 means that
initialization times out after 90 seconds (for each collector).
Default: 90000
lisa.graphical.xml.diff.report.numberofextralines
When the graphical XML diff displays an error, this property controls how many lines before and
after the differing lines are displayed. The default is two lines before and two lines after.
Values: 0, 1, and 2.
Default: 2
lisa.gui.dashboard.sleep.ms
There is a small sleep() just before the dashboard refreshes at end-of-test. The sleep() allows a
timeslice for the metric collectors to wrap up their work. Adjust the timeslice with this property.
Format: milliseconds
lisa.scripting.default.language
Designates the default scripting language to use.
Values:
applescript (for OS X)
beanshell
freemarker
groovy
javascript
velocity
Default: beanshell
lisa.serverSocket.bind.backlog
Specifies the backlog argument while binding Server Socket. Backlog is the requested maximum
number of pending connections on the server socket. Its exact semantics are implementation
specific. In particular, an implementation may impose a maximum length or may choose to ignore
the parameter altogether.
Values: numeric, greater than 0.
Default: 100
qc.pulseInterval
Specifies the interval, in seconds, that HP ALM Quality Center tries to ping the registry,
Default: 300
lisa.server.https.cipher.suites
Allows you to configure Server cipher suites. Following are the rules:
1.
22-Jul-2016
One or more ciphers can be configured by setting a comma-separated list of cipher names.
1766/2016
If this property is not present in the properties file or if the property is present with an
empty value, then the default JVM supported ciphers are enabled.
3.
If all the cipher names that are specified by this property are not supported by the JVM, then
the default JVM-supported ciphers are enabled.
4.
If there is at least one cipher name specified in the property that is supported by the JVM,
then those ciphers alone are enabled.
FileNode.cache.max.size.mb
For the Read a File (Disk, URL or Classpath) step, specifies when the cache file should be flushed,
by size.
Default: 20 MB
FileNode.cache.duration.mins
For the Read a File (Disk, URL or Classpath) step, specifies when the cache file should be flushed,
by time.
Default: 30 minutes
lisa.portal.url.prefix
Prefix for the URL of DevTest Portal.
Default: http://
devtest.hostname
The hostname for DevTest Portal.
Default: the registry server
22-Jul-2016
1767/2016
vse.max.user.lifetime.seconds=1200
console.max.user.lifetime.seconds=1200
coordinator.max.user.lifetime.seconds=1200
simulator.max.user.lifetime.seconds=30
The console refresh interval can be configured with the following property.
lisa.portal.server.console.polling.interval.seconds=5
The interval at which the DevTest Console checks whether the current session is valid and is not
expired.
Mobile Properties
lisa.mobile.custom.arguments
If set, then the string value of the property is added to the command line of the Appium process.
It can be anything meaningful to Appium. A full list of Appium arguments can be found here (
https://github.com/appium/dmg-template/blob/master/Appium.app/Contents/Resources/node_modules
/appium/docs/server-args.md).
22-Jul-2016
1768/2016
Important! The Enterprise Dashboard database is not able to reside in the same database
schema as a registry database. Because the site.properties is handled solely by a registry
process, a custom Enterprise Dashboard database will need to be configured in the dradis.
properties file. For more details on configuration of the Enterprise Dashboard database,
look at the _dradis.properties template in the home directory of your DevTest installation.
devtest.enterprisedashboard.https.enabled=false
Specifies that Enterprise Dashboard runs with schema HTTP or HTTP/S.
Database Properties
These are the default properties used by DevTest to connect to the registry database.
Derby is not supported in a distributed environment. You must use an enterprise database in a
distributed environment.
The following components interact with a database: reporting, VSE, ACL, and the broker. By default,
these components use the common connection pool. However, you can define a separate pool for
each or mix and match. To define a new connection pool, add properties such as lisadb.pool.
newpool.url. The underlying pool implementation is the open source c3p0 pool. DevTest passes the
various properties down. For information about the c3p0 settings that you can select from, see
http://www.mchange.com/projects/c3p0/index.html#configuration_properties.
lisadb.reporting.poolName
Default: common
lisadb.acl.poolName
22-Jul-2016
1769/2016
Oracle Properties
lisadb.pool.common.driverClass
Default: oracle.jdbc.driver.OracleDriver
lisadb.pool.common.url
Default: jdbc:oracle:thin:@[HOST]:1521:[SID]
22-Jul-2016
1770/2016
DB2 Properties
lisadb.pool.common.driverClass
Default: com.ibm.db2.jcc.DB2Driver
lisadb.pool.common.url
Default: jdbc:db2://[HOSTNAME]:[PORT]/[DATABASENAME]
lisab.pool.common.user
Default: none
lisadb.pool.common.password
Default: none
MySQL Properties
lisadb.pool.common.driverClass
Default: com.mysql.jdbc.Driver
lisadb.pool.common.url
Default: jdbc:mysql://[DBHOST]:[DBPORT]/[DBNAME]
22-Jul-2016
1771/2016
Derby Properties
lisadb.pool.common.driverClass
Default: org.apache.derby.jdbc.ClientDriver
lisadb.pool.common.url
Default: jdbc:derby://[SERVER]:[PORT]/[DATABASE];create=true
lisadb.pool.common.user
Default: none
lisadb.pool.common.password
Default: none
DCM Settings
lisa.dcm.labstartup.min=6
lisa.dcm.lisastartup.min=4
lisa.dcm.lisashutdown.min=2
lisa.dcm.lab.cache.sec=<180 default>
lisa.dcm.lab.factories=com.itko.lisa.cloud.serviceMesh.ServiceMeshCloudSupport;com.itko.lisa.
cloud.vCloud.vCloudDirectorCloudSupport;;
lisa.dcm.SERVICEMESH.baseUri=<url>
lisa.dcm.SERVICEMESH.userId=<userId>
lisa.dcm.SERVICEMESH.password=<password>
lisa.dcm.vCLOUD.baseUri=<https://<fqdn>/api/versions>
lisa.dcm.vCLOUD.userId=<userId>
lisa.dcm.vCLOUD.password=<password>
lisa.net.timeout.ms=60000
22-Jul-2016
1772/2016
logging.properties
The logging.properties file lets you set properties that control logging levels within DevTest and thirdparty software.
log4j.rootCategory
Default: INFO,A1
To provide centralized logging for cloud runs, add the registry appender and uncomment the registry
appender properties in the logging.properties file. For example:
log4j.rootCategory=INFO,A1,registry
The following lines adjust the log levels of third-party libraries that are used by DevTest. Specifying
log levels means that they do not clutter the logs with messages unrelated to DevTest.
log4j.logger.com.teamdev
Default: WARN
log4j.logger.EventLogger
Default: WARN
log4j.logger.org.apache
Default: ERROR
log4j.logger.com.smardec
Default: ERROR
log4j.logger.org.apache.http
Default: ERROR
log4j.logger.org.apache.http.header
Default: ERROR
log4j.logger.org.apache.http.wire
Default: ERROR
log4j.logger.com.mchange.v2
Default: ERROR
log4j.logger.org.hibernate
Default: WARN
log4j.logger.org.jfree
Default: ERROR
log4j.logger.com.jniwrapper
Default: ERROR
log4j.logger.sun.rmi
Default: INFO
log4j.logger.com.itko.util.ThreadDumper
Default: INFO
22-Jul-2016
1773/2016
log4j.logger.profiler
Set this property to INFO if you want your profile events to be logged:
Default: OFF
log4j.appender.A1
Default: com.itko.util.log4j.TimedRollingFileAppender
log4j.appender.A1.File
Default: ${lisa.tmpdir}/${LISA_LOG}
log4j.appender.A1.MaxFileSize
Default: 10MB
log4j.appender.A1.MaxBackupIndex
Default: 5
log4j.appender.A1.layout
Default: org.apache.log4j.EnhancedPatternLayout
log4j.appender.A1.layout.ConversionPattern
Default: %d{ISO8601}{UTC}Z (%d{HH:mm}) [%t] %-5p %-30c - %m%n
log4j.logger.VSE
Keep a separate log for VSE transaction match/no-match events, Having a separate log makes
debugging much easier.
Change INFO to WARN for production systems. The logging can slow down systems with high
transaction rates. Do not simply comment out the following line. Explicitly set the log level to OFF
or WARN instead of INFO.
Default: INFO, VSEAPP
log4j.additivity.VSE
To add VSE logging to other log destinations, comment out this line.
Default: false
log4j.appender.VSEAPP
Default: com.itko.util.log4j.TimedRollingFileAppender
log4j.appender.VSEAPP.File
Default: ${lisa.tmpdir}/vse_matches.log
log4j.appender.VSEAPP.MaxFileSize
Default: 10MB
log4j.appender.VSEAPP.MaxBackupIndex
Default: 20
log4j.appender.VSEAPP.layout
Default: org.apache.log4j.EnhancedPatternLayout
22-Jul-2016
1774/2016
log4j.appender.VSEAPP.layout.ConversionPattern
Default: %d{ISO8601}{UTC}Z (%d{HH:mm})[%t] %-5p - %m%n
Keep a separate log for advisory events. This logger warns of potential configuration issues such
as potential memory leaks. The log is deliberately kept separate from the application log to
minimize noise.
log4j.logger.ADVICE
Default: INFO, ADVICE_APP
log4j.additivity.ADVICE
Default: false
log4j.appender.ADVICE_APP
Default: org.apache.log4j.RollingFileAppender
log4j.appender.ADVICE_APP.File
Default: ${lisa.tmpdir}/advice.log
log4j.appender.ADVICE_APP.MaxFileSize
Default: 10MB
log4j.appender.ADVICE_APP.MaxBackupIndex
Default: 20
log4j.appender.ADVICE_APP.layout
Default: org.apache.log4j.EnhancedPatternLayout
log4j.appender.ADVICE_APP.layout.ConversionPattern
Default: %d{ISO8601}{UTC}Z (%d{HH:mm}) %-5p - %m%n
log4j.logger=NIOSession
Enables NIO session logic to log higher levels of state information during playback. This logging is
at the TRACE log level instead of the INFO level of the current logging. In order to turn on NIO
traces, make com.itko.lisa.vse.sio.loggerName=NIOSession in local.properties.
If enabled, periodic thread dumps are sent here. DevTest writes logs at the INFO level. Therefore, to
get the thread dumps, change WARN in the next line to INFO, even with DevTest servers or DevTest
Workstation running. This action results in a thread dump in the named file in 30 seconds. For more
information, search for "threadDump" in lisa.properties. This action also simplifies getting thread
dumps to debug performance issues. Change WARN in the next line to INFO, wait for 1 minute or 2
minutes, then revert the setting to WARN.
You can also generate a point-in-time thread dump with the LISA_HOME/bin/ServiceManager
application. For example, use standard Java tools such as jstack, or issue the following command:
ServiceManager -threadDump tcp://hostname:2014/Simulator
log4j.logger.threadDumpLogger
Default: WARN, THREAD_DUMPS
log4j.additivity.threadDumpLogger
Default: false
log4j.appender.THREAD_DUMPS
22-Jul-2016
1775/2016
22-Jul-2016
1776/2016
log4j.logger.com.itko.lisa.vse.stateful.protocol.http.HttpListenStep
Prints the requests that travel through this class in the vse.log. These log messages begin with
"Raw request start."
Values: TRACE, null
DEFAULT: null
The following lines adjust the log levels of third-party libraries used by DevTest so that they do not
clutter the logs with messages unrelated to DevTest. If not specified, the default value is the value
specified in the log4j.rootCategory property.
log4j.logger.com.teamdev
Values: INFO, WARN, ERROR, FATAL
log4j.logger.EventLogger
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.apache
Values: INFO, WARN, ERROR, FATAL
log4j.logger.com.smardec
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.apache.http
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.apache.http.header
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.apache.http.wire
Values: INFO, WARN, ERROR, FATAL
log4j.logger.com.mchange.v2
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.hibernate
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.jfree
Values: INFO, WARN, ERROR, FATAL
log4j.logger.com.jniwrapper
Values: INFO, WARN, ERROR, FATAL
log4j.logger.sun.rmi
Values: INFO, WARN, ERROR, FATAL
log4j.logger.com.itko.util.ThreadDumper
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.eclipse
Values: INFO, WARN, ERROR, FATAL
log4j.logger.org.codehaus
22-Jul-2016
1777/2016
22-Jul-2016
1778/2016
DB2 Template
dradis.db.driverClass=com.ibm.db2.jcc.DB2Driver
dradis.db.url=jdbc:db2://[HOSTNAME]:[PORT]/[DATABASENAME]
dradis.db.user=[USER]
dradis.db.password=[PASSWORD]
MySQL Template
dradis.db.driverClass=com.mysql.jdbc.Driver
dradis.db.url=jdbc:mysql://[DBHOST]:[DBPORT]/[DBNAME]
dradis.db.user=[USER]
dradis.db.password=[PASSWORD]
Derby Template
dradis.db.driverClass=org.apache.derby.jdbc.ClientDriver
dradis.db.url=jdbc:derby://[SERVER]:[PORT]/[DATABASE];create=true
dradis.db.user=[USER]
dradis.db.password=[PASSWORD]
22-Jul-2016
1779/2016
Note: You must use Google Chrome or Mozilla Firefox to access the API documentation.
Note: You must use Google Chrome, Internet Explorer, or Mozilla Firefox to access the web
interface.
By default, the web interface uses localhost in the URL. To access the web interface from other than
localhost, set the following property in the local.properties file:
lisa.invoke2.swagger.basepath=http://<public_hostname_or_ip_address>:1505/api/Dcm
22-Jul-2016
1780/2016
For the body of the request, use the XML headers from the preceding response. Add the execution
mode element with the new value.
22-Jul-2016
1781/2016
When you submit the request, the response includes the new value of the execution mode.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<VirtualService
xmlns="http://www.ca.com/lisa/invoke/v2.0" name="proxy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.ca.com/lisa/invoke/v2.0 VirtualService.xsd" href="http://localhost:1505/api
/Dcm/VSEs/VSE/magical" type="application/vnd.ca.lisaInvoke.virtualService+xml">
...
<ExecutionMode>Transaction Tracking</ExecutionMode>
...
</VirtualService>
Request/Response Pairs
The ZIP file that is used to create the virtual service must contain one or more request/response pairs
(also known as R/R pairs). These R/R pairs can be located either located in the root of the ZIP file or in
a subdirectory.
Files for request/response pairs must be named with a unique identifier, followed by a "-req" on the
request side and a "-rsp" on the response side, with an .xml or .txt extension. For example,
addUserObject-req.xml and addUserObject-rsp.xml.
Note: A request can have multiple responses. The following set of files would create one
request with three responses.
addUserObject-req.xml
addUserObject-rsp1.xml
addUserObject-rsp2.xml
22-Jul-2016
1782/2016
Structure of serviceProperties.xml
recording
The root element of the serviceProperties.xml file
name
The name of the virtual service to create. Defaults to a generated name with the
"AutoGenService-" prefix, followed by a GUID. If there is already a virtual service with the same
name, the newly created service replaces it.
binary
22-Jul-2016
1783/2016
Sample serviceProperties.xml File for Creating HTTP Virtual Service (Without SSL)
The following is an example of a serviceProperties.xml file that creates an HTTP virtual service
named "TestServiceFromRRPairs" that listens on port 10999 with its base path set to "/". Notice how
other elements have been omitted in favor of using their defaults.
22-Jul-2016
1784/2016
22-Jul-2016
1785/2016
22-Jul-2016
1786/2016
The HTTP/HTML Request step has a default name using this convention: HTTP(s) ("GET" or "POST")
(leaf of URL). An example is HTTP GET rejectCard.jsp. You can change step names at any time.
You can manually execute the HTTP/HTML step at design time. When you select Actions, Replay
through here, DevTest saves the step responses so the step editors can display the response values.
When you add this step to a test case, the step editor includes the following tabs:
URL Transaction Info Tab (see page 1787)
HTTP Headers Tab (see page 1790)
Response Tab (see page 1790)
SSL Tab (see page 1790)
22-Jul-2016
1787/2016
Password
Enter if a password is required for the application server.
Encoding
The list of available values is controlled by the lisa.supported.html.request.encodings property.
You can change the comma-separated list to include the encodings to support. The underlying
JVM must also support all encodings in this list. If a web page uses an encoding that is not
supported in the list, the drop-down entry is blank. If you save in that situation, DevTest replaces
the encoding with the DevTest default (file.encoding key in lisa.properties). Also, if you do not
select an encoding when creating a HTTP/HTML Request step, the DevTest default encoding is
assumed.
URL Parameters
GET (or URL) Request Parameters: These request parameters are passed as part of the URL. They
are exposed to the user in the address bar of the web browser.
POST Parameters
POST Request Parameters. These request parameters are passed as part of the body of the page
request. They are not exposed to the user in the address bar of the web browser.
Form Encoding
During a step execution, parameters are URL encoded as they are sent. The MIME type is
application/x-www-form-urlencoded.
All Known State
All known properties, such as test case properties, data sets, and filters, are listed.
Download files referenced (img, link, script, embed)
If this check box is selected, the step downloads web page images into the test environment. If
you do not select this check box, no images are downloaded.
The following table describes other functions that are part of the toolbar that is available on the URL
Parameters and POST Parameters sections.
Field
Icon
Add
Description
Add a parameter
Add icon
Up
Down
Delete
Delete a parameter
ground--ICO
22-Jul-2016
1788/2016
Find:
Known State
properties icon
22-Jul-2016
1789/2016
Use Property
If this option is selected, you can specify the following parameters:
Property Key
Specify a property that contains the connection information.
Download images referenced (img, link, script, embed)
If this check box is selected, the step downloads web page images into the test environment. If
you do not select this check box, no images are downloaded.
Response Tab
On the Response tab, view the HTTP response that the server returns when this test was recorded.
You can view:
The source of the response
The DOM tree of the response
SSL Tab
The SSL tab lets you enter information for either single or multiple SSL certificates.
1790/2016
Next, an HTTPS Request step is added and https is specified as the protocol and the port and path are
entered.
22-Jul-2016
1791/2016
HTTPS Request step is added and https is specified as the protocol and the port and path are entered
To ensure this process works with all the certificates and only run the test once, a data set is created
for this test step. Use the Create your own Data Sheet data set to create the data set. The data set
has the name Certificate Information and it is configured to run through the data set rows once, and
then exit. Each certificate has five certificates and four parameters. When all the information is
complete, use the Create Data Sheet Skeleton button to open the editor.
22-Jul-2016
1792/2016
For keystoreFile, we use the short file name of the keystore so that relative paths can be used later.
To encrypt the password columns, right-click the column label and select Encrypt.
Return to the HTTP step and select the SSL tab. Use property substitution for the variables. For the
password fields, enter {{keystorePassword}} and {{keyPassword}}.
22-Jul-2016
1793/2016
The test is staged with Stage a Quick Test, and you can see that all of the tests completed
successfully. All five certificates were tested against the demo server and client authentication was
successful for all of them.
REST Step
The REST step is used when testing REST applications to send and receive HTTP(S) requests, including
GET and POST parameters.
To view parameters, click Test State on the right vertical bar. The Test State area slides open. You can
dock, pin, and hide the list.
To view the HTTP response, click Response.
22-Jul-2016
1794/2016
If the response is a JSON string, the string is formatted automatically. To view the string in its original
format, right-click and select Remove whitespace. To view the formatted string again, reopen the
Response panel.
At the bottom of the Response panel is a selection of filters and an assertion that you can add to the
response.
The demo server contains an example of invoking a JSON service to retrieve information from the
LISA Bank user database. The URL is http://localhost:8080/rest-example/.
The rest-example test case in the examples project demonstrates how to use this step.
JSON Content
If you select the JSON type in the Content tab, the following tabs are displayed:
Visual JSON
Shows the content in a tree structure. Columns are provided for editing the names, types, and
values.
Raw JSON
Shows the content as text. To apply formatting, right-click and select Format. To go to a specific
line, right-click and select Navigate, Line.
Changes that you make in one tab are reflected in the other tab.
The following graphic shows the Visual JSON tab.
1795/2016
Connection Tab
The Connection tab has fields for the connection. The tab has sub tabs on the top bar and bottom
bar.
The top bar - for viewing the Visual XML, Raw XML, Headers, Attachments.
The bottom bar - for Request and Response.
Basic Configuration
Design Time Execution
Basic Configuration
Connection
WSDL URL
The WSDL URL is an optional but recommended field (denoted by its slightly gray color).
The WSDL URL must be a URL (either file:/, http:/, or https:/). From the More Options menu
you can:
Browse the file system for a local WSDL or WSDL Bundle file.
Search a UDDI Registry (which populates the advanced UDDI access point lookup).
To migrate from the legacy WS step, select WSDL from hotDeploy.
Create and use a WSDL bundle. You can also create a WSDL Bundle from the Actions menu,
but from the Options menu, DevTest automatically populates the WSDL URL with the resulting
WSDL bundle file URL. Or if you already have a WSDL URL populated, it prepopulates the
WSDL URL in the WSDL bundle dialog.
22-Jul-2016
1796/2016
When you enter a WSDL URL that is not already a WSDL bundle, DevTest creates a WSDL bundle
and stores it locally in the Data/wsdls directory for the project. This action caches the WSDL
locally for quicker access. DevTest parses the WSDL and uses its schema is used to build sample
SOAP messages. The Visual XML editor also uses the WSDL to help you manually edit the SOAP
message. DevTest first tries to load a cached WSDL bundle whenever processing the WSDL. If the
external WSDL has changed and you want to force the local WSDL cache to update, use the
Refresh WSDL Cache
button. You can manually drop a WSDL bundle into the Data/wsdls any
time. When the step tries to process the "live" WSDL URL, it uses the cached bundle instead.
Service, Port, Operation
If the WSDL URL is populated, the WSDL is processed and the Service, Port, and Operation
selections are populated. These optional but recommended fields can be used to build a sample
SOAP request message. Selecting a port also updates the Endpoint URL to match the definition in
the WSDL. Changing the WSDL URL causes these items to be refreshed. If the Endpoint URL and
SOAP Message are unchanged, they update also to correspond to the new WSDL, service, port,
and operation that are selected.
If the endpoint was changed and no longer matches the endpoint in the WSDL, a Warning button
appears next to the field. A tooltip on the button indicates the differences between the entered
value and the WSDL definition. Clicking the button updates the field to match the WSDL definition.
If the SOAP Request Message no longer matches the default, it is not updated automatically. You
can force the SOAP Request Message to be updated by using the Build Message
next to the Operation field.
button
Operation
Any of the following options can be used here:
Build empty SOAP request message.
Build full SOAP request message.
Port
This field indicates the server port on which the service is available.
On Error
This field indicates what action to be taken when some error occurs during execution.
Endpoint
The URL to the SAML Query API of the Identity Provider.
Build Options
When building sample SOAP messages, various build options are used to determine what to do in
various situations.
Use String Pattern for Value: When selected, it populates element values using DevTest string
patterns as opposed to using a hard-coded literal value.
Default Literal Value: When not using string patterns, use this literal value for all string
values.
22-Jul-2016
1797/2016
Build All Choices: By default, only the first element in an XML schema choice is generated. To
build all possible choice elements, select this option.
Note: The SOAP request is not valid if you include multiple choice elements. However, it
provides a sample for each possible choice, which makes it easier to build a message when
you do not use the first choice.
Maximum Elements: Defines the maximum number of elements to include when building the
sample message.
Maximum Type: Defines the maximum number of complex schema types to include when
building the sample message.
Insert Comments: By default, comments that are related to the schema are generated. For
example, when an element is optional, alternative choices, nillable elements, are generated.
You do not see these comments in the Visual XML Editor, but they are visible in the Raw
Editor.
22-Jul-2016
1798/2016
The table shows the XML document, including the SOAP Envelope and Body elements.
Type
Shows the type for each element.
Occurs
Indicates how many elements are expected. The first number indicates the minimum number of
times the element can occur. Zero means that it is optional and can be removed. The second
number indicates the maximum number of times the element can occur. Infinity means that there
can be an unlimited number of elements of that name.
Nil
Lets you set the element value as nil or un-nil. Selecting the check box removes any element
children or values but leaves all attributes alone. Clearing the check box populates all expected
children and attributes as defined in the WSDL schema.
Nillable
Indicates whether the element can be nil. A red icon indicates that the element is non-nillable,
but is set to nil. A green icon indicates that the element is non-nillable and is not set to nil.
Value
You can type the element values directly into the Value column. If the element type is a known
type, specialized edit buttons appear.
To select the columns to display or hide, right-click the column heads.
22-Jul-2016
1799/2016
1800/2016
22-Jul-2016
1801/2016
The Raw XML Editor has a right-click menu for formatting the raw XML.
Note: The Remove whitespace option trims whitespace and all ASCII control characters
from the beginning and end of each line in the document.
If you edit the document to make it invalid XML, the Visual XML Editor could show an error message.
Fix your changes in the Raw XML Editor, and the Visual XML Editor begins working again.
Headers Tab
The Headers tab lets you insert headers that are transmitted with the SOAP message (for example,
HTTP Headers or JMS properties).
22-Jul-2016
1802/2016
Headers Tab
To add a header row and select a header from the drop-down list, click the plus sign.
Accept
The Accept request-header field can be used to specify specific media types that are acceptable for
the response. Use accept headers to indicate that the request is specifically limited to a small set of
types. For example, in the case of a request for an in-line image.
This field contains a semicolon-separated list of representation schemes that are accepted in the
response to this request.
Accept="Accept"":"
#(media-range[accept-params])
Accept - Language
The Accept - Language header field is similar to Accept, but lists the language values that are
preferable in the response. A response in an unspecified language is not illegal.
Accept-Language="Accept-Language"":"
1#(language-range[";""q""="qvalue])
language-range=((1*8ALPHA*("-"1*8ALPHA))|"*")
User - Agent
22-Jul-2016
1803/2016
The Connection general-header field lets the sender specify options that are appropriate for the
specific connection. Proxies and must not communicate the field over further connections.
Connection="Connection"":"1#(connection-token)
connection-token=token
Authorization
To authenticate itself with a server, a user agent (usually, but not necessarily, after receiving a 401
response) includes an Authorization request-header field with the request. The Authorization field
value consists of credentials containing the authentication information of the user agent for the
realm of the resource being requested.
Authorization="Authorization"":"credential
DevTest does not support using properties in the Headers tab. The UI takes a user name and
password during design and calculates the value of the authorization header. To use properties, set
the lisa.http.user and lisa.http.pass properties either in local.properties or in config files and DevTest
uses those properties during run time.
Attachments Tab
The Attachments tab lets you edit attachment data.
22-Jul-2016
1804/2016
Attachments Editor
Referenced Attachments
Referenced attachments are referenced in the SOAP message. To use referenced attachments, in the
VXE, right-click the element that you want to be the referenced attachment and select the
appropriate action:
Convert to Attachment (for MIME and DIME)
Convert to XOP Attachment (for MTOM/XOP Include style)
This action automatically creates the necessary elements and attributes and configures the content
ID that is used to match up the element with the attachment. The action then completes the
following actions:
Switches to the Attachments tab
Prepopulates a new attachment with the content ID
Selects a default content type and attachment type
Populates the value with any existing element data from the VXE
22-Jul-2016
1805/2016
Unreferenced Attachments
If you plan to use unreferenced (anonymous) attachments, use the Attachments tab to add an
attachment manually.
Use the Add, Up, Down, and Delete icons to add, remove, or rearrange the attachments in the table.
MIME DIME XOP MTOM
This field controls how the attachments are sent, using MIME, DIME, XOP, or MTOM standards.
XOP sends different content headers that are based on the SOAP version.
When MTOM is selected, any base64binary schema types are automatically optimized using the
XOP standard. Adding attachments manually is not necessary. If an element is already configured
as an attachment, it is left alone. Any extra attachments added manually are also sent.
If you select Force (even if the document contains no base64binary elements) the document is
formatted and sent as an attachment (Microsoft MTOM method).
The limitation of automatically optimizing elements is that the VXE must understand the element
as a base64binary schema type (or extension/restriction thereof). If you use a data set or
property, the expanded property or first data set entry must contain all possible elements to
optimize. If the VXE does not display the element that must be optimized, the element is not
optimized.
cid
The Content ID that can be used in an href attribute in the SOAP message to link the element to
the attachment data.
content type
The mime encoding type that is used to assist the server in how to process the attachment data.
type value
The DevTest attachment type determines how to edit and interpret the value data. Each type has
its own editor.
Type Editors
XML
An XML-aware text editor to edit the attachment value.
Text
A text-based editor to edit the attachment value.
Base64 Encoded
A text-based editor to edit the attachment value and a bytes viewer to view the decoded binary
data.
Hex Encoded
A text-based editor to edit the attachment value and a bytes viewer to view the decoded binary
data.
URL/Text
A URL field to edit the attachment value and a text data viewer to view the results of loading the
data from the URL.
22-Jul-2016
1806/2016
URL/XML
A URL field to edit the attachment value and a XML-aware text data viewer to view the results of
loading the data from the URL.
URL/Binary
A URL field to edit the attachment value and a binary data viewer to view the results of loading
the data from the URL.
Property
A property field to edit the attachment value. If the resulting property is a string, it sends the
attachment as text; otherwise it sends it as binary data.
Property/URL
A property field to edit the attachment value. The property value is assumed to be a URL. The URL
content is loaded and sent as the attachment data.
Request Tab
The Request tab shows the resulting request data that was sent after any post processing (for
example, substituting DevTest properties). If the message contained any attachment, it does not
show the raw MIME or DIME encoded message, but rather the processed message and attachments.
To see the raw message, use a tool like TCPMon.
22-Jul-2016
1807/2016
Header Tab
The Header tab shows the Transport Headers that were sent for the request.
22-Jul-2016
1808/2016
XML Tab
The XML tab shows the raw SOAP message that was sent after any advanced processing.
22-Jul-2016
1809/2016
22-Jul-2016
1810/2016
Web Service Execution (XML) step Request tab DOM Tree tab
Attachments Tab
The Attachments tab shows any attachments that were sent.
Response Tab
The Response tab shows the resulting response data that was received. If the message contained any
attachment, it does not show the raw MIME or DIME encoded message, but rather the processed
message and attachments. To see the raw message, use a tool like TCPMon. If any advanced postprocessing options are set (see the following window), the SOAP response message is shown postprocessed.
22-Jul-2016
1811/2016
Header Tab
The Header tab shows the Transport Headers that were received from the response.
22-Jul-2016
1812/2016
XML Tab
The XML tab shows the raw SOAP message that was received after any advanced processing.
22-Jul-2016
1813/2016
22-Jul-2016
1814/2016
Web Service Execution (XML) step Response tab DOM Tree tab
Attachments Tab
The Attachments tab shows any attachments that were received. You can access the received
attachments using automatically generated DevTest properties (for use in later steps, filters, or
assertions). For each attachment, the following properties are set.
lisa.<step name>.rsp.attachment.<cid>
Attachment value, byte, or String
lisa.<step name>.rsp.attachment.contenttype.<cid>
Content type (mime type, for example, text/plain)
lisa.<step name>.rsp.attachment.<index>
Attachment value, byte, or String
lisa.<step name>.rsp.attachment.contenttype.<index>
Content type (mime type, for example, text/plain)
lisa.<step name>.rsp.attachment.contentid.<index>
Content Id (cid)
The parameter step name is the DevTest step name that is being executed.
22-Jul-2016
1815/2016
The parameter cid is the Content ID that is usually referenced in the SOAP message.
The parameter index starts at 0 and is increased for each attachment in the response attachments
list.
Advanced Settings
The Web Service Execution (XML) step includes advanced settings.
To open the Advanced settings tabs, click PRO
two new tabs open at the bottom level.
22-Jul-2016
1816/2016
22-Jul-2016
1817/2016
Transport Tab
HTTP Version
This parameter controls which HTTP protocol is used when sending the operation request. The
default is 1.1.
SOAP Version
The SOAP version is auto-populated based on the WSDL definition. SOAP Version controls the
generation of a number of transport headers (for example, SOAPAction and contentType).
Call Timeout (ms)
This parameter defines how to wait while trying to execute the operation. After the timeout is hit,
an exception will be thrown and the On Error handling will occur.
SSL Tab
22-Jul-2016
1818/2016
For an example of using multiple SSL certificates, see HTTP_HTML Request Step (see page 1786).
Specify global certificates properties for SSL in your local.properties file.
For global certificates (web server and web service steps):
ssl.client.cert.path
A full path to the keystore.
ssl.client.cert.pass
Password for the keystore (this password is automatically encrypted when DevTest runs).
ssl.client.key.pass
An optional password for the key entry if you are using the JKS keystore and the key has different
password from the keystore. This password is automatically encrypted using AES (Advanced
Encryption Standard) when DevTest runs.
Note: This option is not available for the WS Test step. To set this option, use the local.
properties file.
For web service steps only certificates (not raw SOAP steps):
ws.ssl.client.cert.path
A full path to the keystore.
ws.ssl.client.cert.pass
Password for the keystore. This password is automatically encrypted when DevTest runs.
ws.ssl.client.key.pass
An optional password for the key entry if you are using the JKS keystore and the key has different
password from the keystore. This password is automatically encrypted using AES (Advanced
Encryption Standard) when DevTest runs.
The SSL configuration in this step is only used for execution. If the WSDL access requires
SSL authentication, set the ssl.client.* properties in local.properties. The ws.ssl.client.*
properties, as well as the SSL tab in the UI, assigns the SSL configuration to be used only
during the execution of the WS step. The SSL configuration for WSDL access may not
necessarily be the same as the SSL configuration for the service.
Note: This option is not available for the WS Test step. To set this option, use the local.
properties file.
22-Jul-2016
1819/2016
Note: If you have duplicate values in local.properties and in the general tab, the values in
the general tab are used.
UDDI Tab
Note: When creating the step, if you used the UDDI Search function when specifying the
web service WSDL URL, these values are automatically populated. If the Inquiry URL is
specified but the Binding Template is not, you could have performed a Model search. To
locate the Binding Template, perform a search at a higher level of the hierarchy. Then drill
down to the TModel through a specific Binding Template.
WS-I Tab
1820/2016
Note: Validation failures are common, but usually do not affect the outcome of the test. A
good practice is to set the next step to continue so that you can complete the test.
Advanced Tab
SOAP Action
This field is auto-populated based on the WSDL operation definition. The field is used as the value
of the SOAPAction transport header for SOAP 1.1 request message. Change this field manually
only in rare cases.
Style
This field is auto-populated based on the WSDL operation definition. The field is used to
determine how a sample SOAP message is generated. Change this field manually only in rare
cases.
Use
This field is auto-populated based on the WSDL operation definition. The field is used to
determine how a sample SOAP message is generated. If Encoded is selected, you can also edit the
Encoded URI in the field next to the choice. Change these fields manually only in rare cases.
SOAP Fault is Error
If a SOAP fault is returned, perform On Error handling.
Do Not Send Request
When selected, the step execution performs all of the normal SOAP message processing, but it
does not send the generated SOAP message. Instead it sets the response to be the request
message that would have been sent.
This method is recommended to use transports other than HTTP/S to send SOAP requests. For
example, when using a JMS client, you can configure the WS step to only create the request and
not send it. Then you can append a Generic JMS step to actually send the request and receive the
response.
Maintain Session
22-Jul-2016
1821/2016
Security Tab
22-Jul-2016
1822/2016
Note: You can add as many security types as are necessary to execute your web service.
22-Jul-2016
1823/2016
When you use a keystore in a security action type configuration, you can verify in the keystore
settings that you are using the correct format, password, alias, and alias password. Clicking the Verify
button on the editors for Signature, Encryption/Decryption, and SAML Assertion Token invokes the
Keystore Verifier, which produces a verification report.
If you do not know the expected alias name for a WS-Security setting, use the Keystore Verifier to list
all of the aliases in the keystore. Leave the Keystore Alias and Alias Password boxes empty and click
Verify. The Keystore Verifier is described at the end of this section on WS-Security.
Note: You can load and save the security configuration information from and to a .wss file,
using the Load
and Save
icons. This capability allows for quick and easy creation of
new steps connecting to the same service.
Security Example
This page describes the parameters that are necessary to run the WS-security example.
22-Jul-2016
1824/2016
XML Encryption-Decryption
Encryption
Select the Use Encryption check box.
Keystore File
The location of the keystore file.
22-Jul-2016
1825/2016
Decryption
Keystore File
The location of the keystore file.
Keystore Password
22-Jul-2016
1826/2016
1827/2016
Signature Verification
The parameters that are required to configure the signature verification are a subset of the
parameters that are required for signing.
Keystore File
The location of the keystore file.
Keystore Password
Enter the password for the keystore.
Keystore Alias
Enter an alias for a public key.
Alias Password
Leave empty or make the same as Keystore Password for PKCS #12 files.
Timestamp-Timestamp Receipt
Timestamp
Select the Add Timestamp check box.
Time-To-Live (sec)
Enter the lifetime of the message in seconds. Enter 0 to exclude an Expires element.
Note: Some Web services, particularly .NET 1.x/2.0 with WSE 2.0, are not compliant with
standard timestamp date formatting, and do not allow milliseconds. For these web
services, clear the Use Millisecond Precision in Timestamp check box.
Timestamp Receipt
The parameters that are required for Timestamp Receipt are a super set of those parameters that are
required for Timestamp. The additional parameter is:
22-Jul-2016
1828/2016
1829/2016
22-Jul-2016
1830/2016
1831/2016
Note: This verification only verifies the keystore parameters. There could still be issues
with the web service, such as a mismatch in certificate sets or an incorrect choice of
algorithm. These issues must be validated independently.
Alias Search
If you do not know the expected alias name for a WS-Security setting, use the keystore verifier.
The keystore verifier lists all of the aliases in the keystore. Leave the Keystore Alias and Alias
Password boxes empty and click Verify.
Aliases have a blue background.
Verification fails because the Keystore Alias and Alias Password boxes were left blank.
WS-I Report
When you click Execute on the Object Editor window, the validation runs. A report is generated
and saved (in the reports directory in the DevTest install directory). You can view the report by
pressing the WS-I Report tab at the bottom of the window.
WSDL Validation
The WSDL Validation step lets you load a WSDL and add one or more assertions to validate the WSDL.
This step is a little different in that it lets you load the static WSDL file and perform assertions on it. In
most steps, the assertions are made on the response.
The following list describes the most useful assertions:
XML Diff Assertion: Checks that the WSDL has not been changed by comparing it to a control
copy of the original WSDL.
XML Validator: Checks for valid XML using Schema or DTD.
WS-I Basic Profile 1.1 Assertion: Checks for compliance with the WS-I Basic Profile.
These assertions are described in Assertion Descriptions (see page 1546).
Prerequisites: Familiarity with the three assertions that were named previously.
Parameter Requirements: Location of the WSDL to validate.
To configure the WSDL Validation step, enter a WSDL in the WSDL URL field and click Load.
22-Jul-2016
1832/2016
Base64 Encoder
The Base64 Encoder step is used to encode a file using the Base-64 encoding algorithm. The result
can be stored into a property for use elsewhere in the test case.
The Base64 Encoder step accepts a file as input and encodes the file using Base64 encoding. You can
store the encoded file in a property. To encode a file, click Load. The Base64 encoded text that is
displayed in the editor is read-only.
Complete the following fields:
File
Enter the full path and path name, or browse to the file to be encoded.
Property Key [opt]
The name of the property in which to store the encoded file.
Load
Click to load and test the encoding of the file. Optionally, store it in the specified property.
If environment error
Action to take if an environment error occurs.
After the file is encoded, you can add filters and assertions. The valid options are:
Random Selection Filter
Parse Value Filter
XML Xpath Filter
Create HTML Table ResultSet Filter
Make Assert on Selection
When you have added filters and assertions, click Load to load the file or Save
contents in a new file.
22-Jul-2016
1833/2016
When a multipart MIME form submit request is recorded, the contents of the file that was uploaded
are recorded. Subsequent playback results in the same content being submitted with "file upload"
portion of the form again. The multipart MIME step can be used to change what file is uploaded
when the test case is played back.
Prerequisite: The HTTP/HTML Request step containing the HTTP parameter must exist, and it must
be before the Multipart MIME step.
Complete the following fields:
Step
Select the name of the HTTP/HTML Request step, or select from the pull-down menu, the step
that receives the property containing the encoded document.
Parameter
Select the name of the property listed in the step named in the Step field from the pull-down
menu.
File
Enter the pathname or browse to the document to be encoded.
MIME Type
Enter the MIME type that the server expects.
Click Load to encode the file.
In the example in the previous graphic, the Account Activity step has a post-parameter user ID that
contains the encoded version of the file DataSet1.Ids.
22-Jul-2016
1834/2016
22-Jul-2016
1835/2016
The SAML Assertion Query Editor has four tabs. The Editor tab lets you configure the query
information. After you configure the query, you can test the query using the Test button in the Query
section of the editor. After you test the query, you can view the raw request that was sent in the Last
Request tab. You can view the raw SOAP response in the Raw Query Result tab. For example, if the
query returned multiple assertions, you can see the assertions in the Raw Query Result tab. You can
view the step response in the Last Response tab. The Last Response tab shows, for example, what is
used in the Web Service WS-Security token.
The Advanced button lets you enter more information.
22-Jul-2016
1836/2016
Connection
This information describes where the SAML Query API server is and how to connect to it.
22-Jul-2016
1837/2016
Endpoint
The URL to the SAML Query API of the identity provider.
SSL Keystore
To use client-side identification certificates to connect to the endpoint, select the keystore file
using the Select button. Or, select a previously entered item from the pull-down list or enter one
manually.
SSL Keystore Password
The password for the SSL Keystore if used.
SAML Version
The SAML version to use to query the identity provider.
Subject
This information describes the recipient of a SAML assertion. The subject could be a user, user group,
or other entity for which you want to provide an assertion about the current authorization/privileges.
Name
The name of the entity (for example, username).
Name Qualifier
A group or categorization that is used to qualify the Name (for example, domain).
Format
This field describes what format the name is being sent (for example, Full Name as opposed to
Username).
Confirmation Methods
Select which confirmation method types you want to include in the query. The query only returns
assertions that contain at least one of the specified types. If you leave all types cleared, the query
returns any assertion regardless of the confirmation method.
Response (deprecated)
This information describes which assertion statements you want to be returned as part of the SAML
Assertion. Response is deprecated as of SAML 1.1.
Local Part
The element name (for example, AuthenticationStatement, AuthorizationDecisionStatement, and
AttributeStatement).
Namespace
The element namespace (for example, urn:oasis:names:tc:SAML:1.0:assertion).
Click Add
Click Delete
22-Jul-2016
1838/2016
Query
A description of which type of query to perform. The query types are:
Attribute
Authorization
Authorization Decision
Attribute
An attribute query responds with a set of attribute statements. For example, it could tell you
which groups a subject is a member of.
Resource
To limit your query to a specific resource (for example, a specific web service, domain, file)
specify the resource name.
Attribute Designators
A name and namespace (like XML elements) identifies each attribute. You can filter the set of
attribute statements that are returned by specifying each attribute type to be returned.
Example:
Name=urn:mace:dir:attribute-def:eduPersonScopedAffiliation,Namespace=urn:
mace:shibboleth:1.0:attributeNamespace:uri)
Authorization
Used to request authentication statements that are related to a specific Subject SAML Assertions.
Authorization Method
This parameter limits your query to returning Authorization Statements that are for a specific
authorization method.
Example:
urn:oasis:names:tc:SAML:1.0:am:X509-PKI,urn:oasis:names:tc:SAML:1.0:am:
PGP,urn:oasis:names:tc:SAML:1.0:am:password
22-Jul-2016
1839/2016
Evidence (Assertions)
(Optionally) Specify one or more SAML Assertions to include with the Authorization Decision
Query as advice to the Identity Provider. Specify the property that holds the SAML Assertion
XML. To use the response from a previous step (for example, another SAML Assertion Query
or Parse Text step) use lisa.<stepname>.rsp.
Evidence (Reference IDs)
Optionally specify assertion reference IDs.
Java-J2EE Steps
The following steps are available in the Java/J2EE category:
Dynamic Java Execution (see page 1840)
RMI Server Execution (see page 1843)
Enterprise JavaBean Execution (see page 1847)
Note: You can use In-Container Testing (ICT) to execute a Java object remotely by
clicking the Remote option button. However, this mode requires some extra setup
before it can be used. For more information, see the Using the SDK.
Local JVM Settings
Select one of the following options:
Make New Object of Class: Select this option button and enter, select, or browse to
the Java class to instantiate. This value must be the fully qualified class name including
the package of the Java class; for example, com.example.MyClass.
Load from Property: Click the option button and enter the name of the property that
has the serialized object as its value.
If environment error
Select the step to redirect to if an environment error occurs while trying to create an
object.
22-Jul-2016
1840/2016
Note: If you require that the Java object be loaded by its own classloader, add the
Class Loader Sandbox Companion.
5. In this example, enter a string representation of a day (5/10/2011). You can enter a value, a
property, or null. DevTest constructs the object and loads it into the Complex Object Editor.
22-Jul-2016
1841/2016
6. You can now manipulate the object, and execute methods, using the Complex Object Editor.
For more information about how to use the Complex Object Editor, see Complex Object Editor
(COE) (see page 494).
7. You can use either of the following methods to add filters and assertions:
Use the inline filter/assertion form (part of the Complex Object Editor)
Manually, by selecting filter under your test step in the test case tree
For example, the following graphic is a window before we execute the before method on the
Date class.
22-Jul-2016
1842/2016
In the Status/Result section, you can add an inline filter in the Save Results in Property text
box. You can also add an inline assertion in the Comparison on Result Like text box.
The Dynamic Java Execution step has a default name using this convention: Dynamic Java
Execution. You can change step names at any time.
22-Jul-2016
1843/2016
You can now manipulate the object, and execute methods, using the Complex Object Editor.
In the previous graphic, the getName method was selected. If you double-click it, it gets added in the
Object Call Tree. You can then click Execute in the dialog, to execute it with any required method
arguments and information about how to process the result.
22-Jul-2016
1844/2016
The previous graphic shows null as the return value because the method is not yet executed. After
you click Execute, it gets executed and the correct return type is shown. The following graphic shows
how the Object Call Tree tracks the results of execution of several methods.
22-Jul-2016
1845/2016
You can also use either of the following methods to add filters and assertions:
Use the inline filter/assertion form
Manually by selecting filter under your test step in the test case tree
You can see the Status/Result section where you can add an inline filter in the Save Results in
Property text box. You can see an inline assertion in the Comparison on Result Like text box.
Note: If you have multiple network cards, using localhost in the RMI name can cause
errors. You may need to use the IP address, or the host name that corresponds to the IP
address.
The RMI Server Execution step has a default name using this convention: RMI Server Execution operation name.
22-Jul-2016
1846/2016
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
Example
This example is based on the demo server, which uses JBoss 4.2.3. To use your local demo server,
enter localhost as the host name.
1. Select the application server from the list and enter the following parameters:
Host Name or IP Address
Enter the hostname or IP address of your application server.
Port Number
Enter the port number.
User
22-Jul-2016
1847/2016
22-Jul-2016
1848/2016
22-Jul-2016
1849/2016
In the Execution Info area, the current EJB information is displayed. If you plan to reuse this
EJB, you can keep the references to the EJB object and the EJB Home by selecting the Keep
EJB Home Reference and Keep EJB Object Reference check boxes. If the bean is an EJB 3 bean
without a home interface, the Keep EJB Home Reference check box is disabled.
6. You can now manipulate the object, and execute methods, using the Complex Object Editor.
The usage is the same as in the RMI Server Execution (see page 1843) step.
1850/2016
3.
lib\sibc.jms.jar
lib\sibc.jndi.jar
lib\sibc.orb.jar
22-Jul-2016
1851/2016
22-Jul-2016
1852/2016
1853/2016
Note: If you have a legacy SQL Database Execution (JDBC) step, you can export the
connection information from the existing step instead of creating it manually. For more
information see Create Assets from Test Steps (see page 454).
Full SQL syntax is supported, but your SQL is not validated. The SQL is passed through to the database
where it is validated. If you get an SQL error, it is captured in the response. You can assert on the
error. Verify that the SQL is valid for the database manager you are using.
22-Jul-2016
1854/2016
1855/2016
CORBA Execution
The CORBA Execution step is used to make CORBA calls using the Java RMI-IIOP library. You are
required to provide appropriate skeleton classes.
Follow these steps:
1. Copy the corbaserver.jar file to the DevTest lib directory before starting execution. This JAR is
available in the CORBA server lib directory.
22-Jul-2016
1856/2016
Note: Copying and pasting from nameserver printed output to the Object IOR field
can introduce spaces. The string must not contain spaces.
Class Name
IOR references this object class.
You can also use the IOR construction dialog. When open, it parses any IOR string that is
entered and fills in the individual parts. Ignore the strange looking key. IORs store the key in a
byte format so not every byte can be displayed properly. To use the parsed version of a raw
IOR, do not edit the field.
4. Click Construct/Load Object.
The dynamic object editor shows the call sheet for the object.
5. Select the method to call and execute it.
The default CORBA Execution step uses the following convention: CORBA classname. You can change
step names at any time.
Utilities Steps
The following steps are available in the Utilities category:
Save Property as Last Response (see page 1858)
Output Log Message (see page 1858)
Write to Delimited File (see page 1858)
Read Properties from a File (see page 1859)
Do-Nothing Step (see page 1860)
Parse Text as Response (see page 1861)
Audit Step (see page 1861)
Base64 Encoder Step (see page 1862)
Checksum Step (see page 1862)
Convert XML to Element Object (see page 1863)
Compare Strings for Response Lookup (see page 1864)
Compare Strings for Next Step Lookup (see page 1866)
Send Email (see page 1867)
22-Jul-2016
1857/2016
22-Jul-2016
1858/2016
Note: This step is used to pass data between test cases. For example, assume Test1 adds
customers to the bank and then returns a list of new account numbers. Those accounts
could be written out to a file. A second test could get the accounts and could make
deposits. The second test would use a data set to read in the file that was created in the
first test.
Be aware of the following warning when writing to a delimited file. The Data directory can
be used as the location of the CSV file only if both tests support rerun. The first test must
be run again to create the CSV in the lads folder so the second test can run. The lads
directory stores files temporarily while a test case or suite is running.
To let the second test run without the first, you must put the data set in a common
location outside the project or MAR.
The Write to Delimited File step writes out one (and only one) data row for each execution. The only
exception is on the first execution when (presumably) the target file does not exist. If the file does
not exist, if indicated, a byte order mark for the selected encoding is written, followed by a row
containing the keys.
The default name for the Write to Delimited File step is Write Properties to File <file>.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
1859/2016
The previous graphic shows the Name/Value pair type of properties file, where name is a property
and Mary is a value of the name property.
The previous graphic shows the XML Tags type of properties file, where fname is a property and Sam
is a value of the fname property.
The Read Properties from a File step has a default name using this convention: Properties Reader
from <filename> where filename is the leaf name of the entered or selected file.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
Do-Nothing Step
The Do-Nothing step does not take any parameters, nor does it perform any actions. However, the
step is useful in certain situations, as you can add assertions to the step. For example, you can use
the scripted assertion to add a quick custom assertion, to compare numbers or dates, or some
numerical comparison test.
22-Jul-2016
1860/2016
Audit Step
The Audit step lets you apply an audit document (see page 560) to a current test step, remote test, or
virtual service.
This step allows a model to be verified in terms of the events it produces during execution.
To open its editor, click the step.
Mode
This step has two modes:
Start Monitoring
Apply Audit Document.
1861/2016
Checksum Step
The Checksum step calculates the checksum of a file and can save that value in a property.
Complete the following fields:
File
Enter the pathname or browse to the file on which you want the checksum to be calculated.
22-Jul-2016
1862/2016
22-Jul-2016
1863/2016
Use the response from this step when this object is required as a parameter in another step. To save
the response in a filter, use the Save Step Response as a Property filter. Or, you can refer to it as lisa.<
stepname>.rsp.
22-Jul-2016
1864/2016
This step is automatically filled out and added to a virtual service when using the Virtual Web Service
HTTP Recorder.
To open a step editor, click the step.
Complete the following fields:
Text to match
Enter the text against which criteria is matched. This value is typically a property reference, such
as LASTRESPONSE.
Range to match
Enter the Start and End of the range.
If no match found
Select the step to be executed, if no match is found.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
Store responses in a compressed form in the test case file
Selected by default. This option compresses the responses in the test case file.
Case Response Entries
In this table you can add, move, and delete entries by clicking Add, Move, and Delete. The
columns in the table are as follows:
Enabled
Selected by default when you add an entry. Clear to ignore an entry.
Name
Enter a unique name for the case response entry.
Delay Spec
Enter the delay specification range. The default is 1000-10000, which indicates to use a
randomly selected delay time from 1000 through 10000 milliseconds. (The syntax is the same
format as Think Time specifications.)
Criteria
This area provides the response of this step if the entry matches the Text to match field. To
edit the criteria, in the Criteria Column area select the appropriate row, and enter a different
setting in the criteria list. Click Enter to update it in the subsequent row.
Compare Type
Select an option for the Compare type from the list:
Find in string (default)
Regular expression
22-Jul-2016
1865/2016
22-Jul-2016
1866/2016
Enabled
Selected by default when you add an entry. Clear to ignore an entry.
Name
Enter a unique name for the next step entry.
Delay Spec
Enter the delay specification range. The default is 1000-10000, which indicates to use a
randomly selected delay time from 1000 through 10000 milliseconds. The syntax is the same
format as Think Time specifications.
Criteria
This area defines the criteria to compare to the Text to match field.
Compare Type
Select from five options:
Find in string (default)
Regular expression
Starts with
Ends with
Exactly equals
Next Step
The step name.
Criteria
Updates the criteria string for an entry.
Send Email
The Send Email step lets you send an email notification from a test case.
Complete the following fields:
Connection
Specifies the asset (see page 1587) that contains the connection parameters to the SMTP mail
server. Select a connection from the drop-down list. To add an asset, click Add New Asset.
From
Identifies the email sender. Enter an email address or a property.
To
Identifies the email recipient. To send to multiple recipients, use a comma between email
addresses. You can also use a property or list of properties.
Example:
{{Ops_email}},{{QA_email}},InfoTechnology@company.com
Cc
22-Jul-2016
1867/2016
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test
To test the email connection, click Send Test Email.
The Send Email step has a default name using this convention: Send Email Step.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
External-Subprocess Steps
The following steps are available in the External/Subprocess category:
Execute External Command (see page 1869)
File System Snapshot (see page 1871)
Execute Subprocess (see page 1871)
Execute JUnit Test Case-Suite (see page 1872)
Read a File (Disk URL or Classpath) (see page 1873)
External - FTP Step (see page 1874)
22-Jul-2016
1868/2016
22-Jul-2016
1869/2016
Command Line
The external command is typically only one command that is written as a shell script or batch file.
You can run multiple commands when the Exec Shell option is also selected. The command string
must be valid for the operating system that you are running.
Environment Variables
Allows existing environment variables to be overridden with new environment variables. If
nothing is entered, the existing environment variables are used for the command. If you define an
environment variable, the new variable sets are used instead of the environment variables that
were used to start DevTest.
Exit Codes
Lets you base the outcome of the test on the exit code of the completed process. Enter a commadelimited string of exit codes with a corresponding step to run when the process exits with this
code.
To test your command, click Execute.
The content is now available for you to filter and add assertions.
The Execute External Command step has a default name using this convention: Command
commandfirstword.
22-Jul-2016
1870/2016
Execute Subprocess
The Execute Subprocess step lets you call a subprocess test case as a single step.
This step is used to call a subprocess and receive the outputs. This step is commonly used when a
specific function is performed in numerous test cases. For example, if a specific validation always
works the same way, you can create a validation subprocess and can add it to different test cases.
For more information, see Building Subprocesses (see page 539).
Complete the following fields:
Subprocess
Select the subprocess from the pull-down menu.
22-Jul-2016
1871/2016
22-Jul-2016
1872/2016
22-Jul-2016
1873/2016
Note: If a binary file is loaded but you do not select to load as byte, DevTest converts the
data to characters (many of which are unreadable) and the step response is a string.
The Read a File step has a default name using this convention: Read file [set the File Name variable].
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
22-Jul-2016
1874/2016
Note: Host Path is the path of the file on the remote computer. Local Path is always the
path to the file on the local computer that is running DevTest. When you upload a file, you
are uploading the file from the Local Path to the Host Path. When you download a file,
you are downloading the file from the Host Path to the Local Path.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
Click Execute Now to initiate the send/receive action.
The response from a download is the file itself. The response from a successful upload is the string
success.
Note: If a file by the same name exists, it is overwritten without a warning message.
The FTP step has a default name using this convention: FTP action (put or get) hostname; for
example, FTP get ftp.download.com. You can change step names at any time.
The JMS Messaging (JNDI) step is scheduled to be deprecated. Use the JMS Send Receive
(see page 1886) step instead.
The JMS Messaging (JNDI) step lets you send messages to, and receive messages from, topics and
queues. You can also receive, change, and forward an existing message. The list of possible queues
and topics can be browsed using JNDI. Provide client libraries where DevTest can read them.
All the common message types including Empty, Text, Object, Bytes, Message, and Mapped
(Extended) are supported.
22-Jul-2016
1875/2016
The JMS Messaging (JNDI) step is configured using a single editor regardless of the messaging
requirements. The input options vary on the messaging requirements. The editor only allows valid
configurations, so when you enable some features, others could become inactive.
The JMS Messaging (JNDI) step has a default name using this convention: JMS publish-queuename
publish. If there is not a publish queue name, the default step name is JMS subscribe-queuename
subscribe.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.Prerequisites: Using DevTest with this application
requires that you make one or more files available to DevTest. For more information, see Third-Party
File Requirements (see page 1446).
Parameter Requirements: This step requires the connection parameters and the queue or topic
names that are used in the application under test. Other parameters could be required, depending on
your environment. Get these parameters from the application developers. In most cases, you can
browse for server resources to get some of these required parameters.
The jms.tst test case in the examples project shows the step that this section describes.
The jms.tst test case uses a publish/subscribe JMS step to send a message and listen on a temporary
queue. A Message Driven Bean (MDB) on the server handles the message and drops the message
onto the temporary queue. The message type is text. The message is an XML payload that is created
by inserting properties dynamically into the XML elements. The properties are read from the
order_data data set. After the response message is received, the XML from the JMS message is put
into a property. The next step does an assertion validating the order ID. After this check asserts true,
the existing message object is changed, and the message is sent to another JMS destination.
The jms.tst test case shows how to listen for and intercept messages as they move through a
multipoint messaging service backbone. You can run this test case against the demo server on your
computer. The application backend is available there.
The editor for the JMS Messaging (JNDI) step contains the following tabs:
The Base tab is where you define the connection and messaging parameters.
The Selector Query tab lets you specify a selector query to be run when listening for a message
on a queue.
The Send Message Data tab is where you create the message content.
The Response Message tab is where the response messages are posted.
Base Tab (see page 1876)
Selector Query Tab (see page 1881)
Send Message Data Tab (see page 1882)
Response Message Tab (see page 1882)
Base Tab
The Base tab is where you define the connection and messaging parameters.
The following graphic shows the Base tab. The tab is divided into the following sections:
22-Jul-2016
1876/2016
To enable and disable the Subscriber Info, Publisher Info, and ReplyTo Info, use the enable check box
in the top left corner of each section. This option allows you to configure the step to be a publish
step, a subscribe step, or both. You can also select to include a JMS reply to component in the step.
When you finish configuring the test step, click Test in the Error Handling and Test section to test the
configuration settings.
22-Jul-2016
1877/2016
Note: The Server Connection Info user and password fields are for connecting to the JNDI
22-Jul-2016
1878/2016
Publisher Info
To set up the ability to send messages, select the enable check box.
To execute a commit when the message is sent, select the use transaction check box.
Enter the following parameters:
Name
The name of the topic or queue. Use Search
name.
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
Message
Select the type of message you are sending. The supported types are Empty, Text, Object, Bytes,
Message, and Mapped (Extended).
Advanced
Displays a panel where you can edit the message headers and can add message properties.
Subscriber Info
To set up the ability to receive messages, select the enable check box.
Enter the following parameters:
Name
The name of the topic or queue. Use Search
name.
Type
Select whether you are using a topic or queue, and whether to listen in synchronous or
asynchronous mode. For asynchronous mode, you also must have an entry in the Async Key field.
To see what messages are waiting to be consumed from a queue, click Browse
of this field.
to the right
Timeout (secs)
The period to wait before there is an interrupt waiting for a message. Use 0 for no timeout.
22-Jul-2016
1879/2016
22-Jul-2016
1880/2016
ReplyTo Info
To set up a destination queue/topic, select the enable check box.
If your application requires a destination, it is set up in this section.
Enter the following parameters:
Name
The name of the topic or queue. Use Search
name.
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
22-Jul-2016
1881/2016
22-Jul-2016
1882/2016
The JMS Messaging - Message Consumer step is scheduled to be deprecated. Use the JMS
Send Receive (see page 1886) step instead.
The Message Consumer step lets you consume asynchronous messages in a test case. This step can
attach to a known queue or topic and can get messages posted for this subscriber. You identify
yourself with a unique key. You must have already subscribed to the queue or topic and the
messages were pushed to that destination.
Prerequisite: You must have the demo server running before you execute the example test case.
Parameter Requirements: Knowledge of the queue or topic being used in the application under test.
22-Jul-2016
1883/2016
The Message Consumer step has a default name using this convention: Listen on subscribequeuename. Before the queuename is entered, the default step name is Async JMS.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
Review the async-consumer-jms.tst test case in the examples project to see what is being described
in this section. The following graphic shows the async-consumer-jms.tst test case.
The create-consumer step subscribes to asynchronous message (topic/testTopic) using the Async Key
(EXAMPLE-ASYNC-WRAPPER). The send-message step publishes message to a queue (queue/C). The
number of messages to be published is controlled using a data set (counterA). The message
consumer step has an Async queue (EXAMPLE-ASYNC-WRAPPER) using which message subscribed by
the create-consumer step is consumed. The number of messages to be consumed is controlled using
the data set (DataSetB).
Note: The Async Key specified in create-consumer and consumer steps must match.
To set up and enable the ability to listen to (subscribe to) messages, select the enable check box.
22-Jul-2016
1884/2016
To set up the ability to send (publish) messages, select the enable check box. To execute a commit
when the message is sent, select the use transaction check box.
Enter the following parameters:
Name
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
Message
Select the type of message you are sending. The supported types are Empty, Text, Object, Bytes,
Message, and Mapped (Extended).
Advanced
Displays a panel where you can edit the message headers and can add message properties.
22-Jul-2016
1885/2016
22-Jul-2016
1886/2016
Each parameter has a tooltip that describes the purpose of the parameter.
Some parameters include the value Automatic as an option. This value indicates that the actual
setting is taken from another parameter. If you click the drop-down arrow and you place the mouse
pointer over the value Automatic, a tooltip displays the name of the other parameter.
In the following graphic, the tooltip indicates that the value of the Destination parameter is
automatically populated from the Send Destination parameter.
22-Jul-2016
1887/2016
Some parameters let you change the editor so that you can enter a property as the value.
Some parameters that provide a discrete set of values let you change the editor so that you can enter
the value directly. For example, the JMS Delivery Mode parameter has the following values:
Persistent and Non-persistent. In the JMS API, these values map to the numbers 2 and 1,
respectively. To enter the value directly, switch to the direct editor. The direct editor also lets you
specify a value that is not in the official enumeration of values.
Send and Receive (see page 1888)
JMS Message (see page 1888)
Test the JMS Send Receive Step (see page 1889)
Monitor and Close Cached Asset Instances (see page 1890)
JMS Message
The JMS Send Receive step lets you configure the message that is sent or received.
The following message types are supported:
Text
Bytes
Stream
Map
Empty
22-Jul-2016
1888/2016
1889/2016
By default, the runtime monitor automatically removes assets that are closed. In the following
procedure, you disable this behavior.
Follow these steps:
1. In the Response tab, click Runtime Monitor.
2. Clear the check box that appears inside the Clear button.
3. Execute the step again.
The runtime monitor displays the assets that were created during the execution of the step.
4. View the following information:
Name: The name of the asset.
Type: The type of asset.
Scope: The name of the test step, test case instance, test case, or DevTest component that
corresponds to the runtime scope of the asset. The value has a tooltip that shows the
scope.
Status: The color green indicates that the asset is active. The color yellow indicates that
the asset is idle. The color gray indicates that the asset is closed.
5. To display more information about an asset, click the status icon.
6. To close an asset immediately, click the status icon and select Close or Force Close.
7. To close a set of assets, click Force Close.
22-Jul-2016
1890/2016
22-Jul-2016
1891/2016
The Send Destination field specifies the queue to which the message is sent.
The Receive Destination field specifies the queue from which the response is received.
The Content area specifies the text of the message.
Follow these steps:
1. Create a test case in the examples project.
2. Add a JMS Send Receive step.
The step editor appears.
3. In the Send Destination list, select queue/A.
4. In the Receive Destination list, select queue/B.
5. In the Content area, type a sentence.
6. Save the test case.
1892/2016
BEA Steps
The following steps are available in the BEA category:
Message Consumer (see page 1893)
Read a File (see page 1893)
Web Service Execution (XML) (see page 1893)
FTP Step (see page 1893)
WebLogic JMS (JNDI) (see page 1893)
Message Consumer
For detailed information about this step, see JMS Messaging - Message Consumer (see page 1883).
Read a File
For detailed information about this step, see Read a File (Disk, URL or Class Path) (see page 1873).
FTP Step
For detailed information about this step, see External - FTP Step (see page 1874).
22-Jul-2016
1893/2016
The WebLogic JMS (JNDI) step lets you send messages to, and receive messages from, topics and
queues. You can also receive, change, and forward an existing message.
WebLogic JMS (JNDI) supports all the common message types including Empty, Text, Object, Bytes,
Message, and Mapped (Extended).
The WebLogic JMS (JNDI) step is configured using a single editor, regardless of the messaging
requirements. The input options vary on the messaging requirements. The editor only allows valid
configurations. When you enable some features, others can become inactive.Prerequisites: Using
DevTest with this application requires that you make one or more files available to DevTest. For more
information, see Third-Party File Requirements (see page 1446).
Parameter Requirements: This step requires the connection parameters and the subject names that
are used in the application under test. The following sections describe the necessary parameters.
There can be other parameters that are required, depending on your environment. Get these
parameters from the developers of the application.
The editor for the WebLogic JMS (JNDI) step contains the following tabs:
The Base tab is where you define the connection and messaging parameters.
The Selector Query tab lets you specify a selector query to be run when listening for a message on a
queue.
The Send Message Data tab is where you create the message content.
22-Jul-2016
1894/2016
Base Tab
The Base tab is divided into the following sections:
Server Connection Info
Subscriber Info
Publisher Info
ReplyTo Info
Error Handling and Test
To enable and disable the Subscriber Info, Publisher Info, and ReplyTo Info sections, use the enable
check box in each section. Using these check boxes, you can configure the step to be a publish step, a
subscribe step, or both. You can also include a JMS reply to component in the step.
When you finish configuring the test step, click Test in the Error Handling and Test section to test the
configuration settings.
22-Jul-2016
1895/2016
Publisher Info
To set up the ability to send (publish) messages, select the enable check box. To execute a commit
when the message is sent, select the use transaction check box.
Enter the following parameters:
Name
The name of the topic or queue. Use Search
name.
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
Message
Select the type of message you are sending. The supported types are Empty, Text, Object, Bytes,
Message, and Mapped (Extended).
Advanced
Displays a panel where you can edit the message headers and can add message properties.
Subscriber Info
Select the enable check box to set up to enable the ability to receive (subscribe to) messages.
Enter the following parameters:
Name
The name of the topic or queue. Use Search
name.
22-Jul-2016
1896/2016
ReplyTo Info
To set up a destination queue or topic, select the enable check box.
If your application requires a destination, it is set up in this section.
Enter the following parameters:
Name
The name of the topic or queue. Use Search
name.
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
22-Jul-2016
1897/2016
This example shows an XML fragment with properties being used. You can type the text, click Read
Message from File to read from a file, or you can store the fragment in a property. If you store the
text in a property, simply place the property in the editor: for example, LISA_PROP.
Notice that properties are used in the message XML allowing the message to be created dynamically
during the test run.
22-Jul-2016
1898/2016
More Information:
Web Service Execution (XML) Step (see page 1795)
SQL Database Execution (JDBC) (see page 1851)
Read a File (Disk URL or Classpath) (see page 1873)
External - FTP Step (see page 1874)
Message Consumer (see page 1893)
22-Jul-2016
1899/2016
The editor for the JCAPS Messaging (Native) step contains the following tabs.
The Base tab is where you define the connection and messaging parameters.
The Selector Query tab lets you specify a selector query to be run when listening for a message
on a queue.
The Send Message Data tab is where you create the message content.
The Response Message tab is where the response messages are posted.
Base Tab
The Base tab is divided into the following sections:
Server Connection Info
Subscriber Info
ReplyTo Info
22-Jul-2016
1900/2016
22-Jul-2016
1901/2016
Default Step Names: The default JCAPS Messaging (JNDI) step name uses the following convention:
JCAPS queuename publish. If there is not a publish queue name, the default step name is JCAPS
queuename subscribe.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
Oracle Steps
The following step is available in the Oracle category:
Oracle OC4J (JNDI) (see page 1902)
More Information:
Web Service Execution (XML) Step (see page 1795)
SQL Database Execution (JDBC) (see page 1851)
Read a File (Disk URL or Classpath) (see page 1873)
External - FTP Step (see page 1874)
Message Consumer (see page 1893)
22-Jul-2016
1902/2016
Detailed information about the parameters and fields for this step can be found in JMS Messaging
(JNDI) (see page 1875).
TIBCO Steps
The following steps are available in the TIBCO category:
TIBCO Rendezvous Messaging (see page 1903)
TIBCO EMS Messaging (see page 1908)
TIBCO Direct JMS (see page 1908)
More Information:
Web Service Execution (XML) Step (see page 1795)
SQL Database Execution (JDBC) (see page 1851)
Read a File (Disk URL or Classpath) (see page 1873)
External - FTP Step (see page 1874)
Message Consumer (see page 1893)
22-Jul-2016
1903/2016
The editor for the TIBCO Rendezvous Messaging step contains the following tabs:
The Base tab is where you define the connection and messaging parameters.
The Send Message Data tab is where you create the message content.
The Response Message tab is where the response messages are posted.
Base Tab
The Base tab is divided into the following sections:
Server Connection Info
Subscriber Info
Certified Transport Info
Publisher Info
22-Jul-2016
1904/2016
ReplyTo Info
Error Handling and Test
To enable and disable the Subscriber Info, Publisher Info, and ReplyTo Info sections, use the enable
check box in the top left corner of each section. To configure the step to be a publish step, a
subscribe step, or both, use these check boxes. You can also select to include a JMS reply to
component in the step.
When you finish configuring the test step, click Test in the Error Handling and Test section to test the
configuration settings.
Publisher Info
To set up the ability to send messages, select the enable check box.
Complete the following fields:
Subject
The name of the subject to use. You can define your own subjects. A valid subject name is: queue.
sample. An invalid subject name is: queue..My_Samples (null element) or .My.Queue.. (three
null elements).
Message
Select the type of message you are sending. The supported types are Empty, Text, Object, Bytes,
Message, and Mapped (Extended).
Send Field
RV messages are actually maps of fields and values. This field is used to enable quick single field
messages. When you enter a value here, the Send Message data is put into the value of a field
with this name. This value is overridden with Mapped (Extended) type messages as they let you
do multiple fields and values in a single message.
Enable Inbox Type
To enable the Inbox Timeout and Enable sendReply fields, select this check box.
Enable sendReply
22-Jul-2016
1905/2016
Subscriber Info
Selecting the enable box turns on the subscriber function and lets you set up the ability to receive
messages.
Complete the following fields:
Subject
The name of the subject to use. You can define your own subjects.
Timeout (secs)
Indicates the number of seconds before DevTest interrupts waiting for a message. For no
timeout, leave this field blank.
Async Key
Enter the value that is necessary to identify asynchronous messages. This value is only required in
asynchronous mode. This value is used in a subsequent Message Consumer step to retrieve
asynchronous messages.
ReplyTo Info
To set up a destination subject, select the enable check box.
If your application requires a destination, it is set up in this section.
Enter the following parameter:
Subject
The name of the subject to use.
22-Jul-2016
1906/2016
This example shows an XML fragment with properties being used. You can type the text, or you can
click Read Message From File to read from a file. The text can also be stored in a property, in which
case you would place the property in the editor: for example, LISA_PROP.
Notice that properties are used in the message XML allowing the message to be created dynamically
during the test run.
22-Jul-2016
1907/2016
22-Jul-2016
1908/2016
Sonic Steps
The following steps are available in the Sonic category:
SonicMQ Messaging (Native) (see page 1909)
SonicMQ Messaging (JNDI) (see page 1910)
More Information:
Web Service Execution (XML) Step (see page 1795)
SQL Database Execution (JDBC) (see page 1851)
Read a File (Disk URL or Classpath) (see page 1873)
External - FTP Step (see page 1874)
Message Consumer (see page 1893)
22-Jul-2016
1909/2016
Default Step Names: The default SonicMQ Messaging (Native) step name uses the following
convention: Sonic queuename publish. If there is not a publish queue name, the default step name is
Sonic queuename subscribe.
If another step uses the default step name, DevTest appends a number to this step name to keep it
unique. You can change step names at any time.
For more detailed information about parameters and fields, see JMS Messaging (JNDI) (see page 1875)
.
webMethods Steps
The following steps are available in the webMethods category:
webMethods Broker (see page 1910)
webMethods Integration Server Services (see page 1914)
webMethods Broker
The webMethods Broker step lets you send and receive messages from the Broker. You can also
receive, change, and forward existing Broker Events/ Messages.
22-Jul-2016
1910/2016
webMethods Broker supports Mapped (Extended) messages that create Broker Events.
The webMethods Broker step is configured using a single editor, regardless of the messaging
requirements. The input options vary on the messaging requirements. The step editor only allows
valid configurations, so when you enable some features others can become inactive. Prerequisites:
Using DevTest with this application requires that you make one or more files available to DevTest. For
more information, see Third-Party File Requirements (see page 1446).
Parameter Requirements: This step requires the connection parameters and the subject names that
are used in the application under test. The following sections describe the parameters that you
require. Other parameters could be required, depending on your environment. Get these parameters
from the developers of the application.
The messaging step editor for webMethods Broker includes three tabs at the bottom of the page:
The Base tab is where you define your connection and messaging parameters.
The Send Message Data tab is where you create your message content.
The Response Message tab is where your response messages are posted.
22-Jul-2016
1911/2016
Base Tab
The Base tab view that the previous graphic shows is divided into the following sections:
Server Connection Info
Subscriber Info
Publisher Info
ReplyTo Info
Error Handling and Test
The Server Connection Info and Error Handling and Test sections are always active. To enable or
disable the Subscriber Info, Publisher Info, and ReplyTo Info sections, use the enable check box in
the top left corner of each section. Using these check boxes, you can configure the step to be a
publish step, a subscribe step, or both. You can also include a replyto component in the step.
When you have configured your test step, click Test in the Error Handling and Test section to test
your configuration settings.
Publisher Info
To set up the ability to send (publish) messages, select the enable check box.
22-Jul-2016
1912/2016
Subscriber Info
To set up to enable the ability to receive (subscribe to) messages, select the enable check box.
Enter the following parameters:
docType
Enter the name of the docType to use.
Timeout (secs)
Indicates the number of seconds before DevTest interrupts waiting for a message. For no
timeout, leave this field blank.
Async Key
Enter the value that is necessary to identify asynchronous messages. This value is only required in
asynchronous mode. This value is used in a subsequent Message Consumer step to retrieve
asynchronous messages.
Auto convert to
To return a string representation of the payload, enter a string that calls the toString() function on
the payload object; xml returns the payload in XML format.
ReplyTo Info
To set up a destination queue/topic, select the enable check box.
If your application requires a destination, it is set up in this section.
22-Jul-2016
1913/2016
22-Jul-2016
1914/2016
22-Jul-2016
1915/2016
22-Jul-2016
1916/2016
22-Jul-2016
1917/2016
22-Jul-2016
1918/2016
IBM Steps
The following steps are available in the IBM category:
IBM WebSphere MQ Step (see page 1919)
IBM MQ Native Send Receive Step (see page 1924)
More Information:
Message Consumer (see page 1893)
Note: This page describes the Base tab. For information about the other tabs, see JMS
Messaging (JNDI) (see page 1875).
22-Jul-2016
1919/2016
To enable and disable the Subscriber Info, Publisher Info, and ReplyTo Info sections, use the enable
check box in the top left corner of each section. Using these check boxes, you can configure the step
to be a publish step, a subscribe step, or both. You can also include a reply to component in the step.
22-Jul-2016
1920/2016
When you finish configuring the test step, click Test in the Error Handling and Test section to test the
configuration settings.
Publisher Info
To set up the ability to send (publish) messages, select the enable check box.
To execute a commit when the message is sent, select the use transaction check box.
Enter the following parameters:
Name
22-Jul-2016
1921/2016
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
Message
Select the type of message you are sending. The supported types are Empty, Text, Object, Bytes,
Message, and Mapped (Extended).
Alt QManager
The queue manager that hosts the publish queue, if it is different from the queue manager to
which you are connecting.
Message Properties
Lets you set publish properties on the message. The list of properties changes depending on the
client mode. For more information, see the WebSphere MQ documentation and the JMS and MQ
Message Properties knowledge base article. If the client mode is JMS, then you can add custom
message properties.
Subscriber Info
To set up to enable the ability to receive (subscribe to) messages, select the enable check box.
Enter the following parameters:
Name
Type
Select whether you are using a topic or queue, and whether to listen in synchronous or
asynchronous mode. For asynchronous mode, you also must have an entry in the Async key field.
To see what messages are waiting to be consumed from a queue (only), click Browse, to the right
of this field.
Timeout (secs)
Indicates the number of seconds before DevTest interrupts waiting for a message. For no
timeout, leave this field blank.
Queue Model
MQ requires this value to create temporary destinations. The queue model is configured on the
MQ server, and it is only active when use temporary queue/topic is checked. In this case, the
ReplyTo Info section is disabled.
Async Key
22-Jul-2016
1922/2016
ReplyTo Info
To set up a destination queue/topic, select the enable check box.
If your application requires a destination, it is set up in this section.
Enter the following parameters:
Name
22-Jul-2016
1923/2016
Type
Select whether you are using a topic or queue. To see what messages are waiting to be consumed
from a queue (only), use Browse
Queue Manager
Allows the ReplyTo to be on a different Queue Manager than the Publisher (in this step).
Note: This step is for WebSphere MQ in native mode. If you are using WebSphere MQ in
JMS mode, we recommend that you use the JMS Send Receive step and the IBM MQ JMS
assets.
The step editor has basic and advanced parameters. To display the advanced parameters, click PRO
at the top of the editor.
The following graphic shows the step editor. The advanced parameters are not shown.
22-Jul-2016
1924/2016
Each parameter has a tooltip that describes the purpose of the parameter.
Some parameters include the value Automatic as an option. This value indicates that the actual
setting is taken from another parameter. If you click the drop-down arrow and you place the mouse
pointer over the value Automatic, a tooltip displays the name of the other parameter.
Some parameters let you change the editor so that you can enter a property as the value.
Some parameters that provide a discrete set of values let you change the editor so that you can enter
the value directly. For example, the Get Options parameter corresponds to an integer value in the
WebSphere MQ API. Instead of opening the Get Options dialog, you can switch to the direct editor
and enter the value. The direct editor also lets you specify a value that is not in the official
enumeration of values.
IBM MQ Native Put and Get (see page 1925)
IBM MQ Native RFH2 Header (see page 1926)
Test the IBM MQ Native Send Receive Step (see page 1926)
Monitor and Close Cached Asset Instances (see page 1927)
1925/2016
The execution log provides a high-level view of the activity that happens behind the scenes.
22-Jul-2016
1926/2016
By default, the runtime monitor automatically removes assets that are closed. In the following
procedure, you disable this behavior.
Follow these steps:
1. In the Response tab, click Runtime Monitor.
2. Clear the check box that appears inside the Clear button.
3. Execute the step again.
The runtime monitor displays the assets that were created during the execution of the step.
4. View the following information:
Name: The name of the asset.
Type: The type of asset.
Scope: The name of the test step, test case instance, test case, or DevTest component that
corresponds to the runtime scope of the asset. The value has a tooltip that shows the
scope.
22-Jul-2016
1927/2016
Status: The color green indicates that the asset is active. The color yellow indicates that
the asset is idle. The color gray indicates that the asset is closed.
5. To display more information about an asset, click the status icon.
6. To close an asset immediately, click the status icon and select Close or Force Close.
7. To close a set of assets, click Force Close.
RabbitMQ Steps
The following step is available in the RabbitMQ category:
RabbitMQ Send Receive Step (see page 1928)
Each parameter has a tooltip that describes the purpose of the parameter.
22-Jul-2016
1928/2016
Some parameters include the value Automatic as an option. This value indicates that the actual
setting is taken from another parameter. If you click the drop-down arrow and you place the mouse
pointer over the value Automatic, a tooltip displays the name of the other parameter.
For more conceptual information about RabbitMQ and the corresponding assets, see RabbitMQ
Assets (see page 1597).
Prerequisites: Using DevTest with this application requires that you make one or more files available
to DevTest. For more information, see Third-Party File Requirements (see page 1446).
Send and Receive (see page 1929)
Message Properties (see page 1929)
Message Contents (see page 1930)
Correlation Schemes (see page 1930)
Test the RabbitMQ Send Receive Step (see page 1931)
Monitor and Close Cached Asset Instances (see page 1931)
Message Properties
RabbitMQ has messages, which consist of header data and a payload.
Like JMS, you can add custom properties to the header data.
Like WebSphere MQ, the payload is text or binary. Internally, the payload is stored as binary.
Like JMS and WebSphere MQ, header fields are available for Message ID, Correlation ID, and ReplyTo.
Unlike JMS and WebSphere MQ, RabbitMQ does not specify anything about the Message ID,
Correlation ID, and ReplyTo fields. These fields are provided as a convenience. RabbitMQ itself does
not care how, or if, the fields are used.
With Message ID, this means that a message is not assigned a Message ID automatically. The
application must fill in this field before sending the message, if it wants to. The application also
determines the uniqueness of the Message ID.
With ReplyTo, it is again up to the application to determine how this this field is populated on the
client side and interpreted on the service side. The field might contain the name of a response queue,
or a routing key, or something completely different.
22-Jul-2016
1929/2016
Message Contents
The RabbitMQ Send Receive step lets you specify the message content. The following types are
supported:
XML document
DevTest property reference
Text
Graphic image
Binary
IBM RFH2 header
IBM MQMD header
JSON document
EDI document
Correlation Schemes
The following correlation schemes are available:
Default ReplyTo
RabbitMQ Direct
RabbitMQ Topic
RabbitMQ Headers
RabbitMQ Payload
Default ReplyTo
The simplest correlation scheme is not technically called that. It is the default behavior of the
RabbitMQ Send Receive step.
The ReplyTo field of the request message is filled in with the name of the response queue, whether it
is a temp queue or not, and it is assumed that the service will use the default exchange to send a
response directly back to that queue. This corresponds to the typical ReplyTo scheme in other
messaging providers.
22-Jul-2016
1930/2016
RabbitMQ Headers
In this correlation scheme, the request message contains one property used for correlation. It is
assumed that the service will copy the property value verbatim to the response message. It is also
assumed that the service knows which headers exchange to use when sending the response.
If no explicit exchange is provided on the response queue, it will use amq.headers by default. It also
can generate a value, and will set up the message and queue binding parameters automatically. This
overrides the default ReplyTo behavior because headers exchanges do not use routing keys.
You only need to provide the name of the property, and the name of the property on the response
message if different from the request.
RabbitMQ Payload
Like JMS and MQ, we have payload-based correlation (see page 1632) with RabbitMQ. This scheme
works exactly like it does with the other providers.
22-Jul-2016
1931/2016
SAP Steps
The following steps are available in the SAP category:
SAP RFC Execution (see page 1932)
SAP IDoc Sender (see page 1934)
SAP IDoc Status Retriever (see page 1935)
22-Jul-2016
2.
1932/2016
3. Enter the following parameters in the SAP RFC Execution step editor. You can use properties
for RFC input parameters.
22-Jul-2016
1933/2016
3.
22-Jul-2016
1934/2016
22-Jul-2016
1935/2016
3. Enter the following parameters in the SAP IDoc Status Retriever step editor. You can use
properties for SAP input parameters.
Timeout (secs)
The duration of polling operation for SAP IDoc status
22-Jul-2016
1936/2016
Note: Browser support for recording Selenium Integration tests is limited to Firefox. After
you import these steps to CA Application Test, you can run the test cases on Google
Chrome, Mozilla Firefox 24 or later, or Internet Explorer 8.0 or later.
You can also export a CA Application Test Selenium test case to a JSON script. For more information,
see:
Export a Selenium Test Case to a JSON Script (see page 1944)
22-Jul-2016
1937/2016
Note: We recommend that you turn off the automatic upgrade option:
1. Click Firefox, Add-ons on the main Firefox menu.
The Add-ons Manager opens.
2. Click Extensions and double-click Selenium Builder.
3. Select the Off option for Automatic Updates.
Note: If you have the Add-on Bar enabled, you can click Launch Selenium Builder
in the bottom right corner of the Firefox browser window.
3. Enter the URL of the web application you want to test in the Start recording at field.
4. Click Selenium 2.
Note: Selenium 1 does not support the required ability to export to JSON.
5. Navigate to the web application and perform the actions you want to test.
6. When you are done, return to the Selenium Builder page and click Stop Recording.
22-Jul-2016
1938/2016
6.
Note: For more information about creating Selenium Builder tests, see the
Selenium Builder documentation at http://seleniumbuilder.github.io/se-builder/.
Click Selenium
1939/2016
Note: The JSON script supports variable substitution by property for any value that
you input. You can also use properties with encrypted values, such as
{{password_enc}}, to avoid exposing sensitive data.
The following Selenium Builder steps are mapped to your test case as described:
Store
The name/value pair becomes a standard property in your test case. The name is prefixed
with "selenium" to distinguish it from other properties. For example, the following JSON
definition becomes a new property with the name selenium.window_title. The value is
populated after the step runs.
{
"type":"storeTitle",
"variable":"window_title"
},
Verify
The verify step in Selenium Builder is used to validate user interface elements. If the
validation fails, the state of the step is set to ERROR, but the test case execution flow
continues to the next step. An associated DevTest error event (in red) is created for the
failure.
Assertion
22-Jul-2016
1940/2016
Prerequisites
Prerequisites for using the CA Application Test for Selenium Builder 1.0 plugin include:
Firefox version 43 or higher
If you have a version of Selenium Builder installed prior to 3.0.5, you must uninstall it.
Follow these steps:
1. From the Tools menu in Firefox, click Add-ons.
2. Select Selenium Builder, then click Remove.
3. Restart Firefox.
Install the Selenium Builder add-on for Firefox (https://addons.mozilla.org/en-US/firefox/addon
/selenium-builder/) (in the Firefox browser). Make sure that you run the add-on at least once
before installing the CA Application Test for Selenium Builder 1.0 Plugin. From the Firefox menu,
select Developer, Launch Selenium Builder.
Installation
Follow these steps:
1. Go to the [DEVTEST_HOME]\addons\sebuilder-plugin directory.
2. Copy the entire lisa directory, and its contents, from [DEVTEST_HOME]\addons\sebuilderplugin.
3. Go to your [Firefox profile]\SeBuilder3\plugins directory. To find your Firefox profile:
a. For Firefox 3.6 and later, from Firefox, select Help, Troubleshooting information.
22-Jul-2016
1941/2016
3.
Note: The Firefox menu bar contains the File, Edit, View, History,
Bookmarks, Tools, and Help menu items. On Windows, the menu bar may
be hidden. To show a hidden menu bar temporarily, click the Alt key.
22-Jul-2016
3.
1942/2016
3. Click the test step, then click the Selenium Step tab in the right panel.
The details for the step open, including the JSON script (for reference), its action (or gesture),
and image. More fields display depending on the action type.
Actions include:
Get
Loads the webpage into the browser.
GoBack
Simulates the user clicking the Back button on their browser.
ClickElement
Clicks in the middle of the given element.
DoubleClickElement
Performs a double-click at the middle of the given element.
SendKeys
Lets you send keystrokes to the active window just as if you had manually typed them on the
keyboard.
SetValue
Ensures focus on an input field and sets its value.
ElementPresent
Verifies that the specified element is somewhere on the page.
ElementValue
Verifies the value of the element, such as text in an input field, or true/false for a check box.
Switch to Frame
Retargets script execution to the specified iFrame.
Switch to Window
Retargets script execution to the specified browser window
4. Some actions enable editing for XPath expressions. Click the Locator link to open the XPath
editor (see page 1951).
The left side of the dialog displays a tree that shows the UI hierarchy in the current test step.
The middle tree displays the attributes of the currently selected element or, for a multiple
selection, attributes that are common to all selected elements. These attributes are
informational only. The right side displays a screenshot of the current step.
a. Click an element in the left-side tree or right-side image.
22-Jul-2016
1943/2016
Click Selenium
22-Jul-2016
1944/2016
3.
CAI Steps
The following step is available in the CAI category:
Execute Transaction Frame (see page 1945)
22-Jul-2016
1945/2016
22-Jul-2016
1946/2016
1947/2016
Mobile Steps
Mobile test steps are automatically created when you record a mobile test case (see page 646). The
test steps represent the mobile actions or gestures that are captured during the recording. Each test
step represents the actions that you performed on a specific screen in the application.
When the recorded test case is complete, you can modify the test case in a variety of ways by
manually reordering the actions, inserting additional actions, or adding assertions (see page 481).
The following step is available:
Modify Mobile Test Steps (see page 1948)
22-Jul-2016
b.
1948/2016
2.
b. Click Mobile testing step in the element tree on the right to expand the details for the
step.
The Mobile Testing Step tab opens and shows a screenshot of the test application.
Each individual action displays in a separate dialog. You can expand or collapse each
action to provide more space for the screenshot.
c. To view or edit the the details of the screen element, click the Locator hyperlink.
The Select Element window opens. Click the desired element in the screenshot to
select it, and click Apply.
3. To manually add a new action, right-click in the action area of the tab and click Add.
a. Select the desired action.
b. For actions that require a specific screen element, click Click to Set.
The Select Element window opens. Click the desired element in the screenshot to
select it, and click Apply.
c. Complete any other fields required for your new action.
4. To rearrange the order of the actions, drag and drop the action to the desired location.
5. To delete an action, right-click the action and click Delete.
6. You can also add the following element or screen actions by right-clicking the screenshot for a
recorded action:
Change all assets to...
Select an asset in the drop-down menu and all assets in the test are changed to that one.
(This option is only available for tests created before version DevTest Solutions 8.4.)
Back
Inserts a Back command to return to the previous screen in the application. Android only.
Get element
Performs a Get on the selected element. The name of the selected element appears next
to the Get element option.
Tap element
Performs a Tap action on the selected element. The name of the selected element
appears next to the Tap element option.
Send keys
Brings up the keyboard and simulates pressing the specified keys to set the value of the
text element.
Note: In some instances, the application does not display the typed values. For
example, a password field might not display the entered values.
22-Jul-2016
1949/2016
Set value
Sets the value for the selected element. The name of the selected element appears next
to the Set value option.
Note: You can also use this action to set the value for a slider. For example, setting
a value of 0.8 moves the slider 80% to the right. Use increments of 0.1 when
setting the value for a slider. Setting a value of 0.25 is unrecognized and does not
move the slider.
Long Tap screen
Performs a long tap on the screen, as opposed to a specific element.
Long Tap element
Performs a long tap on the selected element. The name of the selected element appears
next to the Long Tap element option.
Wait
Inserts a pause in the test. You can express the wait like ThinkTime at the step level. For
example, 1s-10s inserts a random pause between 1 and 10 seconds. 100z inserts a pause
of 100 milliseconds.
Comment
Lets you insert a comment for a specific action. The comment performs no action, it is for
documentation only.
Script
Lets you insert an arbitrary beanshell script. Typically, this script does not interact with the
device or simulator. This action provides the means of inserting a custom assertion.
Change Orientation
Changes the orientation of the device.
Shake
Performs a shake gesture on the device.
Go to background
Performs the action of pressing the home button. This action forces the application to the
background for 10 seconds and then brings it back. This action is useful for testing because
it typically forces the application to release memory and stop any CPU-intensive work. iOS
only.
Assertion
For more information, see Add an Assertion to a Mobile Test Step (see page 481).
Execute Script
Lets you write and run a script to perform a customized function or procedure. Right-click
a step in the test pane and select Add step after..., Custom Extensions, Execute script (JSR223). See Execute Script (JSR-223) Step (see page 1961) for more information.
Note: When scripting with Appium, use the _webDriver variable. This variable is a
22-Jul-2016
1950/2016
22-Jul-2016
6.
1951/2016
6. Edit the XPath expression in the Expression field for the selected element.
The XPath expression is validated while typing. If the XPath expression is empty or invalid, an
error message displays.
7. To search for an element or elements on a page, enter text in the type search filter in the
Search text field.
The tree and the screenshot are updated with the result of the search. The XPath expression
is also updated.
8. To update the tree in the dialog, you can use the toolbar to the right of the Search field.
Actions include:
Collapse All
Collapses the tree.
Show Attributes
Adds or removes element attributes in the tree. By default, the tree does not contain
attributes and clicking in the center table does not update the XPath expression with the
attribute name. If you want to select attributes, turn Show Attributes on. The tree is
updated and all attributes are also part of the tree. You can select attributes in the tree
and also search by attribute names.
Show Invisible
By default, all elements that are invisible (and all of their descendants) are hidden from
the tree. Toggling Show Invisible adds all invisible elements and their descendants to the
tree.
Show Disabled
By default, all elements that are disabled (and all their descendants) are hidden from the
tree. Toggling Show Disabled adds all disabled elements and their descendants to the
tree.
Find Lists
Automates the selection of list elements. If Find List is selected, clicking on one element
that is part of a list results in selecting all the elements in that list. The XPath expression is
then updated for all list elements.
9. When selecting elements in the tree, the Expression field provides variants of the current
XPath expression that uniquely identify the selected element. To select another XPath variant,
expand the Expression combo and select one of the variants.
22-Jul-2016
1952/2016
22-Jul-2016
1953/2016
c. Click
Add.
h. Click
Save.
22-Jul-2016
c.
1954/2016
3.
c. Click
Add.
j. Click
Save.
Once the application in the test is compiled, you can capture a preloaded image.
Follow these steps:
1. Copy the .jpg or .png file to use in the test to your DevTest Workstation directory.
22-Jul-2016
1955/2016
22-Jul-2016
1956/2016
Once the application in the test is compiled, you can write and run a script to perform these
validations using the Execute Script functionality.
Follow these steps:
1. Right-click a step in the test pane that includes a recorded event that you want to inspect.
2. Select Add step after..., Custom Extensions, Execute script (JSR-223).
3. Create a script to validate the recorded event using a JSR-223 step and an AppTest method.
For example, if you want to edit an external web URL, the events are in JSON format and
include the URL of the selected link.
import com.itko.lisa.mobile.sdk.AppTest;
String lastEvent = AppTest.getLastAppEvent(_mobileSession);
testExec.setStateValue("last.mobile.event", lastEvent);
3. Right-click at the desired location in the recorder window, click Table, and click one of the
22-Jul-2016
1957/2016
22-Jul-2016
1958/2016
Description
$table
$size
$index
Integer The current index for looping through table rows (zero-based)
$position Integer The current index for looping through table rows (1-based)
To loop through each row in the table, you must include an $index or $position
variable in the XPath expression. If either of these variables is found, the defined
conditions are evaluated for each row in the table. For example:
In Android ListView:
$table/*[$position]/@text
In iOS:
$table/*[$position]/*[1]/@text
d. Click OK.
Note: A progress dialog opens during swiping. Click Cancel to interrupt longrunning swipe actions.
22-Jul-2016
1959/2016
Note: The Java Script step has been deprecated. Use the Execute Script (JSR-223) (see page
1961) step instead.
The Java Script step gives you the flexibility of writing and executing a Java script to perform some
function or procedure. Your script is executed using the BeanShell interpreter. You have access to all
the properties in the test case, including built-in objects.
Prerequisites: Some knowledge of BeanShell. For more information about BeanShell, see http://www.
beanshell.org/.
The step includes a script editor. Double-clicking an item in the Available Objects list pastes that
variable name into the editor.
The last value that is exposed in the script is saved as the response of this step.
The following graphic shows the script editor. The script contains the following statements:
A new Date object is created, initialized to the current date and time.
This object is stored in a new property, newProp, using one of the DevTest exposed objects,
testExec. For more information, see Using the SDK.
The toString() value of the Date object is set as the response of the step.
The Test button lets you test the script. You see the result from executing the script, or an error
message describing the error that occurred.
DevTest property name syntax is flexible and can include spaces. The property names that are not
valid Java identifiers are converted for use in this step. An underscore (_) replaces any invalid
characters.
If you use properties {{exampleprop}} in a script, DevTest substitutes the properties for the actual
property values at run time before it runs the script.
Properties with "." in their names are imported into the script environment with "." replacing "_". So
{{foo.bar}} in a script is the same as foo_bar.
You can produce a log event inside a script step or assertion. A testExec object is useful. To produce a
log event, code the following instead of using the log4j logger. The testExec.log() object causes an
actual event to be raised and you can see it in the ITR.
testExec.log("Gothere");
22-Jul-2016
1960/2016
A test case run has only one scripting instance. If there are multiple Java scripting steps, whether in
the same test case or in subprocesses, DevTest uses the same instance to run the entire test case.
By default, variables are global to the instance. This behavior extends to subprocesses.
If you want the scope of a variable to be local, place the code inside an opening curly brace and a
closing curly brace. For example:
{
Stringvar="local";
returnvar;
}
1961/2016
Examples are in the scripting test case in the Examples (see page 407) project.
Set the default scripting language by using the lisa.scripting.default.language (see page 1750) property.
Note: Instances of TestExec object are not allowed to be added to the state map (using
TestExec.setStateValue method in the script).
22-Jul-2016
1962/2016
22-Jul-2016
1963/2016
If this check box is cleared, the step produces a list of response objects. The step produces
the list, even if it contains only one response.
Default: The step response is formatted as XML.
If Environment Error
Specifies the action to take or the step to go to if the test fails because of an environment error.
Default: Abort the test.
22-Jul-2016
1964/2016
Connect
This section provides quick links to the DevTest Solutions Community, Support pages by product, CA
Education offerings (see page 1965), and other resources.
User Community
Support
CA Application Test (http://www.ca.com/us/support/ca-support-online/support-by-product/caapplication-test.aspx)
CA Education
CA Education DevTest Solutions Resources
Course Search (http://education.ca.com/)
CA Service Virtualization YouTube Playlist (https://www.youtube.com/playlist?
list=PLynEdQRJawmzre0WtxEkIH2Nx3q4FUVZO)
22-Jul-2016
1965/2016
Extensions
This section contains extensions to DevTest Solutions.
OData Dynamic Virtual Services (DVS) (see page 1966)
for an update service is provided with many intermediate and advanced features.
You manage the data that you create through a REST API to save and load useful data sets.
Development and QA use DVS in creating repeatable tests for applications using OData services
without requiring an instance of a real service.
DVS consists of the following two components:
Eclipse plug-in that allows designers to create the MAR file.
The MAR file instantiates the OData service from either a RAML or a configuration file (AEDM).
This file is similar to an Entity Data Model file.
WAR file that can be deployed into a web server instance such as Tomcat, that supports a REST
API.
This file allows direct creation and deployment of an OData virtual service from a RAML.
DVS uses an extension to CA Service Virtualization named the OData Virtual Services Extension which
provides the OData emulation.
Click any of the following images for additional information:
22-Jul-2016
DVS Features
Building DVS (see Install DVS (see
(see page 1967) page 1990)
page 1994)
Design Your
Deploy Your
Manage Your Virtual
Virtual Service Virtual Service Service Data (see
(see page 1999) (see page 2008) page 2012)
1966/2016
Design Your
Deploy Your
Manage Your Virtual
Virtual Service Virtual Service Service Data (see
(see page 1999) (see page 2008) page 2012)
1967) DVS Limitations (see page 1989) section. (see page 1989) DVS also supports many intermediate
and advanced features. Legacy OData v3 compliance to the same level is provided with exceptions,
but is not being actively developed. See DVS Limitations (see page 1989) for a list of limitations in the
DVS implementation.
Most of the example URLs given in this document use the Bookshop example service. We
recommend that the Bookshop example service is installed in one of your VSE. Try out the examples
and play with the virtual service (VS) using an interactive REST client such as PostMan or Advanced
Rest Client. Remember, you can restore the example data to its original state. Restore the data by
either stopping and restarting the VS or by reloading the data using the Administration API from
seeddata.sql. In most cases, the example URLs have the protocol, server, port, and base path to the
service elided for brevity. If the full URL is http://myVSEserver:8844/odata/v4/Bookshop/Authors,
the example is written as .../Authors. When trying the example, replace the ... with the elided
portions of the URL. Ensure accuracy when specifying your server name in place of myVSEserver. All
examples use GET as the HTTP method unless explicitly noted. Most examples are based on the
Bookshop example project that is provided with DVS.
You should be familiar with OData terminology and the meaning of the following terms:
Entity set
Entity type
Property
Navigation property
See www.odata.org (http://www.odata.org/) for current external documentation for OData related
topics, example service implementations, and other useful resources. This page is divided into the
following sections:
Method Support (see page 1968)
Resource Paths Supported (see page 1971)
22-Jul-2016
1967/2016
Method Support
HTTP methods POST, GET, PUT, and DELETE are used to create, read, update, and delete OData Entity
Instances (records). For all requests that include a request body, specify Content-Type:application
/json in the request header.
POST
POST is used when creating records. The resource URL must be an entity set URL. The resource can
also be a URL whose final segment is a navigation property that points to a collection of entity types.
In the second case, an implicit linkage is made between the entity instance (record) whose navigation
property was used, and the new record. In each case, the call must include a request body in JSON
format that contains at least one property for the entity type the resource path resolves. The key and
required properties must be present, except for those key and required properties the model
configuration (AEDM file) for the VS defines as automatically generated. Property names must be in
double quotes and are case-sensitive. Property values for string and date time types must be in
double quotes. Numeric and Boolean types can either be quoted or unquoted. The presence of an
invalid property name causes the request to fail with status 400.
You can perform a deep insert by optionally including in the request body the additional record data
for other new records to be created simultaneously as the parent record. Each of these records is
implicitly linked through a navigation property in the parent record.
By default, result of POST is echoed back in the response body. This result is useful when some
properties have values that are generated or have defaults.
A successful POST creates a new record and returns status 201.
Example 1 Create a new author record by posting directly to the entity set.
POST ../Authors
{
"Name": "Anonymous",
"DOB": null,
"DOD": null,
"Bio": "Formerly the most prolific author of all."
}
POST is the http method, ../Authors is the abbreviated URL which would be http://myVSEserver:8844
/odata/v4/Bookshop/Authors i n actual use and the block that is delimited by the curly braces the
request body.
Example 2 Create a book record and create an implicit link between that book and author by
22-Jul-2016
1968/2016
Example 3 Create a book record and create a comment on the book simultaneously. This example is
using deep insert to create multiple records at a time.
Note: In this example, because the Inventory navigation property is one to one and can
only reference at most one record, the navigation property value is a single JSON object
with the record valu e. Where the navigation property is one to many, or many to many,
the navigation property points to a collection of records. The value of the navigation
property is a set of zero or more comma separated record instances as JSON objects, all
within square brackets braces.
POST ../Books
{
"Id": "FIC-101-006",
"AuthorId": "101",
"Title": "The Old Curiosity Shop",
"Synopsis": "Schmaltz sells.",
"ListPrice": 19.95,
"Weight": 1,
"Size": {
"Height": 9,
"Width": 5.5,
"Thickness": 1
},
"Inventory":
{
"odata.type":"Inventory",
"Id": "FIC-101-006",
"Price": 14.99,
"InStock": 6
}
}
Note : DVS has a defect where the response body for a deep insert only contains the parent
record.
22-Jul-2016
1969/2016
POST is used to create references (linkages) between records. See $ref for this usage of POST.
GET
Used to return either single Entity Instances (records), or Collections of records, and in concert with
$expand can return records or Collections of records from multiple resource paths. Data that reaches
a resource path is returned in JSON format, with scope and presentation of the data returned can be
further controlled through System Query Options $filter, $select, $format, $top, $skip, $count and
$orderby, and also by certain request headers.
GET can also return a single property when the resource path resolves to one specific property
instance. If this property is not a collection, or a complex property, $value can be used in the URL to
limit response to only the value data. (see $value)
GET is also used to return a service document, or metadata about the OData service. See Service
Document and $metadata for more information.
A successful GET returns status 200 OK..
For examples of using GET, see the information under System Query Options, Filter Operations, and
Filter Functions.
PUT
Used to perform a full update in-place update of a single record. Request body is in JSON format, and
all required properties must be present. Key properties can be omitted and always retain their
original value. Any non-key properties absent from the request body are set to null. A successful PUT,
by default returns no response body and have a return code of 204 No Content. If a Prefer request
header is specified and contains the value return=representational, then the updated record is
returned, and the return code is 200 OK.
Example 1 Update author with Id '103'. Bio is set to a new value. DOB is set to the value previously
held. Id retains the value of 103 and would not be changed even if specified in the request body. DOD
is set to null because it is not specified and is not a key property.
PUT ../Authors('103')
{
"Name": "Julius G. A. Payder IV ",
"Bio": "Unpublished aspiring author",
"DOB": "1956-07-04",
}
PUT can also be used to update a single property. This property can be either a simple property, a
collection, or a complex property. DVS has a limitation in that complex properties that are included
within another complex property cannot be updated. Nor can any property under such a complex
property be updated.
Example 2 Update a Complex Property within the Book instance with key 'FIC-101-001'.
PUT ../Books('FIC-101-001')/Size
{"value": {"Height": 9, "Width": 5.5, "Thickness": 0.2} }
Example 3 Example of a syntactically valid PUT that fails due a DVS implementation limitation.
22-Jul-2016
1970/2016
PUT ../Books('FIC-101-001')/Size/Thickness
{"value": 0.2 }
The message, Multiple level of complex type property is not supported yet with status 501 Not yet
implemented is returned.
DELETE
DELETE is used to delete a single record. DVS prevents an entity being deleted if it has linkages with
one or more other entities. Until the links to those entities are removed to assure referential integrity
is maintained. DELETE can manage linkages between records. See $ref for this usage of POST. DELETE
can also be used to set individual properties to null or collection properties to an empty set. Required
or key properties cannot be set to null. The same limitations that apply to single property PUT
updates apply to DELETE.
A successful DELETE returns status 204 No Content.
Example 1 Delete the Book with Id 'FIC-101-001'
DELETE ../Books('FIC-101-001')
Example 2 Set the SkillSet of employee 'EMP00127' to the empty set.
DELETE ../Personnel('EMP00127')/SkillSet
22-Jul-2016
1971/2016
$value
$value is used with GET and must be the last segment in the resource path. Like all Single Property
requests, the Resource path (URL) must otherwise resolve to a single Property instance. For example:
h ttp://myVSEserver:8769/mybaseresourcepath/myEntitySet('A_Key_Value')/anEntityProperty /
$value (http://devjo01w7a:8066/odata/vPub/v4/Beers()
Causes response body to be simply the value of the requested Property, in text/plain form without
any surrounding JSON formatting.
Causes response to be the integer count of the number of matching items in text/plain form without
any surrounding JSON formatting. The value that is returned reflects the effect of any $filter, $skip,
and $top System Query Options present as parameters.
$ref
Available for OData version 4.0 compatible virtual services only. $ref must be the last segment in the
resource path. $ref changes the meaning of the URL from referring to the object to a reference of the
object.
$ref is used with POST, PUT, and DELETE, and is used to manage navigation links between entity
instances.
The OData standard requires that a navigation property resource path segment to immediately
precede the $ref keyword because the navigation property specifies what association is modified. It is
valid for multiple navigation properties to exist between the same two entity sets. For example, an
employees entity set can contain records of entity type employee where the employee has both a
supervisor and staff navigation property pointing back to the employees entity set. While both would
link records of the same type, they would represent different semantics.
If the navigation property was defined with a partner, both the navigation property that is specified,
and its partner are affected. For example, if the supervisor represented an employees direct
manager, it would be defined as the partner navigation to staff. The staff navigation property be a
one to many relationship. An employee can have zero or more employees reporting to them, but an
employee would only have one direct supervisor.
Examples:
POS T .../WorkTeams('Associates') / (http://devjo01w7a:8066/odata/vPub/v4/Beers()Members/$ref
With a request body of the following:
{
22-Jul-2016
1972/2016
Would explicitly associate the Personnel record with Id 'EMP00133' with the WorkTeam record with
key 'Associates ' .
DEL ETE .../WorkTeams('Associates') / (http://devjo01w7a:8066/odata/vPub/v4/Beers()Members/$ref is
the reverse of the POST example and removes any association that had been established between
the two records through the navigation property.
Both will return a Status 204 "No Content" on success.
Note: DVS does not support the $id keyword. Resource URLs containing $id as a parameter
are not supported.
$link
$link is available for OData version 3.0 compatible virtual services only. OData version 3 is the version
3 equivalent to $ref, and functions in a similar way. One notable difference is that the $link keyword
appears before the last resource path segment, which must be a navigation property.
Two Examples:
POST .../myEntitySet('EndpointOneKey')/$links/NPName
With a request body of the following:
{
"url": "TargetEntitySet('keyvalue')"
}
Would explicitly associate the record in Entity Set myEntitySet with key 'EndpointOneKey' to the
record in TargetEntitySet with key 'keyvalue'.
DELETE .../myEntitySet('EndpointOneKey') / (http://devjo01w7a:8066/odata/vPub/v4/Beers()$links/
NPName('keyvalue') i s the reverse of the POST example that is given previously, and removes any
association that had been established between the two records through the navigation property.
Both return a Status 204 "No Content" on success.
Service Document
A GET to the base URL of the OData VS returns a Service Document in JSON format, which is a list of
the entity sets defined in the VS.
For example: GET http://myVSEserver:8844/odata/v4/Bookshop returns 200 OK with a response
22-Jul-2016
1973/2016
$metadata
A GET to the base URL of the OData VS followed by the key word $metadata returns an XML
representation of the Entity Data Model schema for the VS.
See OData Version 4.0 Part 3: Common Schema Definition Language (http://docs.oasis-open.org/odata
/odata/v4.0/odata-v4.0-part3-csdl.html) for a full description of the elements that can be returned from
a $metadata.
In its $metadata response, DVS returns
Element
Child Elements
EnumType
Member
ComplexType
Property
EntityType
EntitySet
NavigationPropertyBinding
1974/2016
22-Jul-2016
1975/2016
$format
$format controls the representation of the data in the response body. In general, DVS returns
response bodies in JSON format with the exception that $metadata is always returned as XML. URLs
containing the $value, and $count keywords always return data as text/plain. DVS can use a valid
default for each request. Setting the data format is never required. Format can also be specified in
the request header. OData v4, and OData v3 support different options for JSON responses.
$format=json is the default for all calls that would return a JSON response.
$format=verbosejson can be used with OData version 3.0 services only and causes more meta data
to be included in the response body.
$format=text/plain must be used with $count, and $value.
$format=xml must be used for $metadata requests.
With OData version 4.0, you can explicitly control the amount of meta data returned.
$format=application/json;odata.metadata=minimal is the default metadata setting, and causes the
"@odata.context" to be included in the response body.
$format=application/json;odata.metadata=none suppresses all metadata in the response body.
$format=application/json;odata.metadata=full causes all available metadata to be returned. For
DVS, this includes @odata.context and @data.typ", @ d ata.id (http://data.id/), and @data.editlink
for each record, and NavigationPropertyName@odata.associationLink, and N
avigationPropertyName@odata.navigationLink for each Navigation Property in each record.
With either OData version, you can specify the format in the request header.
Accept: application/json - for the default less verbose JSONoutput
Accept: application/json;odata=verbose - for verbose JSON output (Odata v3)
Accept: application/json;odata.metadata=minimal - same as parameter equivalent.
Accept: application/json;odata.metadata=none - same as parameter equivalent.
Accept: application/json;odata.metadata=full - same as parameter equivalent.
Accept: application/xml for $metadata requests
Accept: text/plain for $count and $value requests
22-Jul-2016
1976/2016
$filter
$filter is used to restrict the data returned to only those records which meet certain criteria. It is only
used with GET. The argument to $filter is a logical expression that is comprised of references to
properties in the entity pointed to by the current resource path context, or that can be reached
through navigation properties from the current resource path context, filter operators, filter
functions, and/or literals. $filter SQOs only affect the resource for the resource path context in which
they are declared. Requests that reference multiple entities can have separate $filter SQOs applied to
each resource (see $expand).
See the sections for filter operators, and filter functions for the list of supported operators and
functions. DVS does not support $count in $filter arguments.
Example 1 - Return only those books that fit on a 10 inch high shelf.
. ../Books?$filter=Size/Height lt 10
Example 2 - Return only those books which have a cost less than 20.00 dollars and written by
Dickens.
.../Books?$filter=ListPrice lt 20.00 and Author/Name eq 'Charles Dickens'
Example 3 - Return only those books which cost less than 20.00 dollars and were written by Dickens,
OR has a name that contains the string Gulden.
.../Books?$filter=(ListPrice lt 20.00 and Author/Name eq 'Charles Dickens') or contains(Title,'London')
$select
$select controls which properties are returned in the response body. $select is only valid for GET and
can appear as a subsidiary parameter for $expand.
Argument to $select is either a comma-separated list of property names, or the asterisk ('*')
character. $select is a shortcut equivalent to a list of all non-navigation properties. The property
names must be valid for the entity type corresponding to the resource path against which $select is
applied, and DVS does not support selecting only some properties from within a complex property
that is part of that Entity, so for DVS, only property names that are directly in the object can be
arguments. ... /myEntitySet?$select=APropertyName,AComplexPropertyName is valid, assuming the
two property names that are listed are part of the entity type for entity Set myEntitySet , ... /
myEntitySet?$select=APropertyName,AComplexPropertyName/AComplexPropertyProperty is not
supported by DVS.
Example 1 - Return the title and synopsis for each book
.../Books?$select=Title,Synopsis
Example 2 - Return the name title and synopsis for each book which weighs over two pounds.
(Demonstrates multiple SQOs in a request)
.../Books?$select=Title,Synopsis&$filter=Weight gt 2.0
Example 3 - Return all the property values for a specific Author.
22-Jul-2016
1977/2016
Note: Returning all properties is the default behavior for an OData service. Explicitly
specifying $select=* is typically not required.
.../Authors('100')?$select=*
Note: For OData version 3.0 only, you can include properties reached through navigation
properties in the argument list for $select . This is because the limited $expand syntax
supported by OData version 3.0 had no provision for associating SROs with specific
branches of an expand .
$orderby
$orderby allows control of the order in which records are returned. Any simple property in the set of
entities and by the resource path be used in the argument list and simple properties reachable using
navigation paths from the current context. These navigation paths must all resolve to a single
instance. One to many or many to many navigation paths are not permitted. Keyword desc can be
used to override the default sort order of low to high. Keyword asc is also available if you want to
state the sort order.
Example 1 - Return the title, synopsis, and list price for each book that is ordered from the lowest list
price to the highest list price.
.../Books?$select=Title,Synopsis,&$orderby=ListPrice
Example 2 - Return the title, synopsis and list price for each book ordered from the highest list price
to the lowest list price, and sort ties by title in ascending order. The asc keyword is optional.
.../Books?$select=Title,Synopsis,ListPrice&$orderby=ListPrice desc,Title asc
Example 3 - Return the title, synopsis and list price for each book ordered by the actual price asked.
.../Books?$select=Title,Synopsis,ListPrice&$orderby=Inventory/Price&$expand=Inventory
($select=Price,InStock)
Note: Currently, DVS does not enforce the restrictio n prohibiting one to many or many to
many (http://manymany/) n avigation paths to properties used in an $orderby and will return
reasonable results. This behavior is not dependable as the presence of one to many or
many to many (http://manymany/) navigation paths means that the path does not
22-Jul-2016
1978/2016
$skip
$skip takes as an argument an integer which is the number of otherwise qualifying records to pass
over and omit from the response body. $filter is applied to the result set before $skip when
determining the result set in the response. When counting records for $skip , the record at the same
level as $skip and any records nested within that record due $expand are counted as one record.
Together with $top this is used by an application to page though data where it would be
inconvenient to retrieve all of it at one time.
Example - Fetch the name and description for all authors, but skip the first three authors.
.../Authors?$select=Name,Bio&$skip=3
$top
$top allows the user to restrict the number of records returned by specifying the maximum number
of records to return as an argument. The effect of $filter and then $skip are applied before $top. Like
$skip, w hen counting records for $top, the record at the same level as $top and any records nested
within that record due $expand are counted as one record. Together with $skip this is used by an
application to page though data where it would be inconvenient to retrieve all of it at one time.
Example 1 - Fetch the title and list price for all books whose list rice is less than 50.00 but skip the
first three books, and only return a maximum of five books.
.../Books?$select=Title,ListPrice&$filter=ListPrice lt 50.00&$skip=3&$top=5
Example 2 - Same as previous example, but include the comments on the books. The same number of
books is returned with selected properties from the comment records on these books.
.../Books?$select=Title,ListPrice&$filter=ListPrice lt 50.00&$skip=3&$top=5&$expand=Comments
($select=CriticName,Comment)
$expand
$expand allows a user to request related data from multiple Entity Sets. $expand accepts a commaseparated list of resource paths composed of navigation properties originating from context in which
the $expand is specified. Each top-level record is returned with child record data nested within it. If
an expand resource path traverses several entities, all entities traversed are expanded, and data for
each entity at a deeper level is nested within the parent record in the level above. DVS will ignore a
$ref keyword that is the last segment of an $expand resource path argument.
OData version 4.0 compatible services allow each of the resource paths arguments to expand to
specify System Query Options to apply only to that resource path. These options appear within
parenthesis directly after the resource path, with multiple System Query Options separated by a semicolon (";"). The System Query Options supported DVS within $expand are $filter, $select, $top, $skip,
and $orderby. Advanced feature $levels is not supported.
22-Jul-2016
1979/2016
1980/2016
Note: $count is not a valid System Query Option in OData version 3.0. Instead $inlinecount
is used with an argument of either allpages or none .
Filter Operators
DVS supports all $filter Operators that are defined in OData version 3.0. DVS does not support the
has operator that is introduced with OData version 4.0.
Sub-expressions can be grouped using parenthesis to override precedence. Operators are processed
in precedence level order (level 1 = highest priority). Operators within an expression with equal
precedence are evaluated left to right.
Operator Description
Precedence
Level
mul
div
mod
add
sub
eq
ne
gt
Compare arguments and evaluate to true if Left argument Greater than Right 3
Argument
ge
lt
Compare arguments and evaluate to true if Left argument Less than Right
Argument
le
Compare arguments and evaluate to true if Left argument Less than or Equal
to Right Argument
not
and
or
Note: Comparisons must be made between expressions of compatible types. For example,
22-Jul-2016
1981/2016
Any property which is not a key, and was not defined as being required may have a null value to
indicate its value is undefined. Any comparison where one or both of the arguments are null will
evaluate to false, except comparisons using eq or ne against the keyword literal null. Both $filter=
APropertyWithNullValue le SomeLiteral and $filter=APropertyWithNullValue ge SomeLiteral will
evaluate to false when APropertyWithNullValue contains a value of null even if SomeLiteral is the
literal null.
String functions
contains(string,substring) - Returns true if second string argument is the same as, or is found within,
the first string argument, or if substring is null. Will return false if string is null. Introduced as of
OData version 4.0.
.../Books?$filter=contains(Title,'London')
substringof(substring,string) - Returns true if first string argument is the same or is found within the
second string argument, or if substring is null. Will return false if string is null.This is the OData
version 3.0 equivalent of contains. This is not supported by Odata version 4.0, and also notes the
reversal of the parameters as compared to other string functions.
.../Books?$filter=substringof('London',Title)
startswith(string,substring) - Returns true if second string argument matches the first string
argument starting from the beginning of the first string argument, or if substring is null. Will return
false if string is null.
.../Books?$filter= startswith ( Title,'T' )
endswith(string,substring) - Returns true if second string argument matches the end of the first string
argument, or if substring is null. Will return false if string is null.
.../Books?$filter= endswit h( Title,'Cities' )
length(string) - Returns an integer with value equal to the number of characters in the string. If the
value of string is null, null is returned.
.../Comments?$filter= length ( Comment) gt 40
indexof(string,substring) - Returns an integer with value equal to the position of substring within
string, with 1 being the first position. If substring is not in string, 0 is returned. If either argument has
a value of null, null is returned.
22-Jul-2016
1982/2016
22-Jul-2016
1983/2016
Mathematical Functions
round(decimalValue) - Returns the input numeric value that is rounded to the nearest integer value.
If the decimal portion of the input is less than 0.5, the next lowest integer value is returned.
Otherwise, the value is increased to the next integer. If the input value resolves to null, null is
returned. Both following examples returns the same result set.
../Books?$filter=round(Weight) eq 1.0
22-Jul-2016
1984/2016
../Books?$filter=round(Weight) eq 1
floor(decimalValue) - Returns the input numeric value that is reduced to the integer value. That is if
the decimal portion of the input is set to zero. If the input value resolves to null, null is returned.
../Books?$filter=floor(Weight) eq 0
ceiling(decimalValue) - Returns the input numeric value that is increased to the next highest integer
value if the decimal portion of the input is not zero. If the input value resolves to null, null is
returned.
../Books?$filter=ceiling(Weight) eq 2
Odata-Version
OData-Version can be provided as a request header. Value should resolve to a number. DVS checks
this numeric value against the OData version the target VS is configured to emulate, and if versions
are not equal the request is rejected with status 400, and a message indicating what OData version is
supported. At present a DVS configured for OData version 4.0 does not support OData version 3.0
requests, and the other way around, and no other version of OData is supported.
Odata-Version is always returned as a response header whose value is either 3.0, or 4.0 depending on
the OData version the target VS is configured to emulate.
OData-MaxVersion
OData-MaxVersion may be provided as a request header. Its value is ignored if OData-Version is also
present. If OData-MaxVersion has a value that resolves to a number equal to or greater than the
OData version the target VS is configured to emulate, then the request passes, but is otherwise
rejected with status 400. A message indicating the OData version the target VS is configured to
emulate.
Prefer
By default POSTreturns a response body containing the newly created entity in JSON format, while
PUT and by default, PATCH responds with a 204 No Content. The following prefer headers allow
explicit control of this behavior.
return=minimal
For For successful calls to methods POST, PUT, (and if supported PATCH) with a VS configured for
OData version 4.0, return=minimal suppresses the response body. For a VS configured for OData
version, 3.0,return-no-content has the same effect.
22-Jul-2016
1985/2016
return=representational
For successful calls to methods POST, PUT, (and if supported PATCH) with a VS configured for OData
version 4.0, return=representational forces a return of a response body containing the newly created
or modified values in JSON format. For a VS configured for OData version 3.0, return-content has the
same effect.
Location
A response header, only returned when performing a POST to a VS configured for OData version 4.0.
Value of header is the edit URL of the newly created entity.
OData-EntityId
A response header, only returned when performing a POST to a VS configured for OData version 4.0
where a Prefer header with a value of return=minimal was in effect. Value of header is the entity ID
(key or keys), of the newly created entity.
22-Jul-2016
1986/2016
For example, entity type order in the Bookshop example is defined with custom properties enabled.
Therefore
<EntityType Name="OrderProperty">
<Key>
<PropertyRef Name="name"/>
</Key>
<Property MaxLength="256" Name="name" Nullable="false" Type="Edm.String"/>
<Property MaxLength="256" Name="dataType" Type="Edm.String"/>
<Property MaxLength="4096" Name="description" Type="Edm.String"/>
<Property MaxLength="256" Name="defaultValue" Type="Edm.String"/>
<Property MaxLength="4096" Name="possibleValues" Type="Edm.String"/>
<Property MaxLength="256" Name="producerMappingProperty" Type="Edm.String"/>
<Property MaxLength="256" Name="entityName" Type="Edm.String"/>
</EntityType>
and
<EntitySet EntityType="Bookshop.OrderProperty" Name="OrderProperties"/>
22-Jul-2016
1987/2016
Some limitations are imposed by the underlying database. For example, changing the datatype can
fail if values stored for the CP are incompatible with the new type.
1988/2016
See EntityType in Design Your Virtual Service (see page 1999) for defining an entity type with this
feature enabled.
DVS Limitations
DVS does not support any feature that is only required for intermediate or advanced OData v4
conformance, unless indicated. Features that are part of the OData Minimal Conformance Level (
http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-ospart1-protocol-complete.html#_Toc406398370) for an updatable service are typically implemented with
exceptions.
Omissions to OData Minimal Conformance Level
PATCH method for differential update. This method should be available for a compliant updatable
OData service. CA Service Virtualization does not allow HTTP methods apart from POST/GET/PUT
/DELETE. Until HTTP methods are supported, PATCH cannot be implemented.
Other omissions
These omissions are not required for minimal conformance. DVS returns a 501 Not Supported
message for unsupported features.
22-Jul-2016
1989/2016
Known Issues
See README.txt in the distribution to see a list of known defects at the time of posting.
Prerequisites
To build the DVS, the DVS must be downloaded and the following tools must be installed and
configured:
Java SE Development Kit (JDK) to compile the source code
Apache Ant to orchestrate the build
22-Jul-2016
1990/2016
Note: Line breaks do not display correctly in certain editors when DVS is downloaded as a
zip and expanded into a folder. This limitation is caused by UNIX style line terminators in
the text files. The build is not effected but can be difficult examining or modifying the files
under Windows. Avoid this issue by cloning the dvs_ce repository to your desktop instead
of downloading the zip.
Note: If you want to run DVS components in Java 7 and Java 8 runtime environments, JDK 7
must be used. If you are currently running your Java applications (Eclipse and Tomcat7) on
Java 8, use JDK 8 to build.
1. If not already present, download the JDK from the Oracle download site (http://www.oracle.com
/technetwork/java/javase/downloads/index.html). Ensure that you select a Java Platform (JDK)
installer most suitable for your host platform (x86 or x64).
2. Follow Oracles instructions for installing the JDK.
3. Set the environment variable JAVA_HOME to the folder containing the newly installed Java
SDK (for example, C:\Program Files\Java\jdk1.7.0_79).
4. Add %JAVA_HOME%\bin to your user PATH (for example set PATH=%JAVA_HOME%\bin;%
PATH%).
5. Open a new console (cmd.exe) window and verify that JAVA_HOME is set and the JDK is in
your search path.
6. Run java -version and examine the output to make you are seeing the expected version of
Java.
Apache Ant
Any current version of Apache Ant is expected to work. Version 1.9.4 was used in testing this
procedure. The Apache documentation, Installing Apache Ant (http://ant.apache.org/manual/install.html)
can be used as a reference when installing Ant.
Follow these steps:
1. Download Ant from the Apache download site (http://ant.apache.org/bindownload.cgi), selecting
the .zip of the Ant distribution.
22-Jul-2016
1991/2016
1.
Note: You can elect to use the tar distribution. Long file names in the tar archive
can require gnu tar to perform the extraction.
2. Unzip the Ant distribution into your tools folder (that is, C:/tools). A folder reflecting the
version of Ant chosen (for example, apache-ant-1.9.4 is created under your tools folder).
3. Set environment variable ANT_HOME to the Ant directory path. (for example, set
ANT_HOME=c:\tools\apache-ant-1.9.4).
4. Add %ANT_HOME%\bin to your user PATH (for example, set PATH=%PATH%;%ANT_HOME%
\bin).
5. Open a new console (cmd.exe) window to verify that ANT_HOME is set and running ant version returns the expected version of Ant.
_init:
[get] Getting: http://search.maven.org/remotecontent?filepath=ant-contrib/antcontrib/1.0b3/ant-contrib-1.0b3.jar
[get] To: C:\tools\apache-ant-1.9.4\lib\ant-contrib-1.0b3.jar
[get] http://search.maven.org/remotecontent?filepath=ant-contrib/ant-contrib/1.
0b3/ant-contrib-1.0b3.jar moved to https://repo1.maven.org/maven2/ant-contrib/an
t-contrib/1.0b3/ant-contrib-1.0b3.jar
[get] Getting: http://search.maven.org/remotecontent?filepath=org/apache/ivy
/ivy/2.4.0/ivy-2.4.0.jar
[get] To: C:\tools\apache-ant-1.9.4\lib\ivy-2.4.0.jar
[get] http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.4.0
/ivy-2.4.0.jar moved to https://repo1.maven.org/maven2/org/apache/ivy/ivy/2.4.0
/iv
y-2.4.0.jar
install-antlibs:
[ivy:resolve]:: Apache Ivy 2.4.0 - 20141213170938:: http://ant.apache.org/ivy/
::
[ivy:resolve]:: loading settings:: file = C:\proj\dvs_ce\buildessentials\ivysettings.xml
[ivy:resolve]:: resolving dependencies:: com.ca (http://com.ca).dvs#dvs.build;
22-Jul-2016
1992/2016
all:
BUILD SUCCESSFUL
Total time: 6 seconds
When the build completes, the content in your console window displays similar to the
following screen:
22-Jul-2016
1993/2016
The initial build can take 15 minutes or more depending on the capability of your system and network
latency. Subsequent builds are faster. The subsequent build takes advantage of local copies of thirdparty jars loading into an Ivy cache during the first build.
The following output build artifacts are located in the build directory.
dvs.app.dvs_servlet contains dvs.app.dvs_servlet.war which can be deployed under Tomcat to
expose DVS features through a REST API.
dvs.lisa-plugins contains dvs.lisa-plugins.zip, which is the site assembly for installing the Eclipse
plug-in in archive form.
dvs.lisa-extensions.odata contains dvs.lisa-extensions.odata.zip which contains the OData DVS
extension. The OData DVS extension must to be deployed into your VSE to support the DVS OData
virtualizations.
Next Steps
See Install Dynamic Virtual Service (see page 1994) for instructions about how to deploy the newly
created build artifacts.
1994/2016
I nstalling Eclipse or the DVS Eclipse plug-in is not required for the following situations:
Only defining the OData virtual services using the RAML format
Only deploying the virtual services through the REST API supported by the DVS servlet
Installation
1. From the Eclipse main menu, select Help, Install New Software....
Install dialog displays.
2. Click Add to add a new site and c lick Archive from the Add Repository dialog.
3. Browse, or enter the location where the site assembly for the ODME Assistant was built or
copied to.
4. Verify that the name DVS DevTest Eclipse PlugIn populates in the Name column and click OK.
5. Check the DVS DevTest Eclipse PlugIn checkbox and click Next .
6. If you installed the plug-in previously, select Update my installation to be compatible with
the items being installed and click Next .
7. Verify the Install Details and click Next .
8. Accept the license and click Finish.
Because a trusted certificate was not used to sign the code, a warning displays.
9. Click OK to proceed.
10. (Optional) Click Run in Background to run the installation in the background.
22-Jul-2016
1995/2016
Note: Installing DVS servlet is optional. Installation is only required if you intend to use the
DVS REST API.
Prerequisites
The war file containing the DVS servlet was tested with Apache Tomcat 7.0.57. Other versions of
Tomcat or other web servers are supported.
A Java 7 or Java 8 run-time environment must be installed on the system that hosts the web server.
To obtain the download and instructions from www.oracle.com. (http://www.oracle.com.)
If Apache Tomcat 7.0.57 is not installed, go to https://tomcat.apache.org for the download and
instructions.
22-Jul-2016
1996/2016
1997/2016
22-Jul-2016
1998/2016
Next Steps
To define your own virtual service see Design Your Virtual Service (see page 1999).
1999/2016
Element Names
Many of the elements in an AEDM have a name attribute. The values for these attributes must all
conform to the requirements for a JSON identifier. Typically, each element type has a different name
space. It is possible for the same name to be used for an entity set, entity type, and a property. For
example, see Personnel . Property and navigationproperty share the name space within the scope of
the same parent element. You cannot have a property and navigationproperty with the same name in
the same entity type. You can have the same property name in multiple complextype, and entity type
declarations.
Elements of an AEDM
The primary elements in an AEDM are EntitySet, EntityType, and Association. Property and
NavigationProperty elements help define the EnityType. The schema element provides information
that is relevant to your entire VS. ComplexType allows other properties to be grouped for reference
and EnumType allows definition of a property with values restricted to members of a set of valid
values.
Schema
The schema element is the parent element for the entire configuration and holds information for the
configuration as a whole.
Namespace specifies the name for the scope of the EntityType and EntitySet definitions in a
reversed internet domain style similar to Java packages. For example, com.ca.example.Bookshop.
The optional attribute Alias is a shorthand version of namespace, and generally is equal to the
last segment of the namespace value. In our example is Bookshop. When there is a need to
qualify a name with a namespace, such as when specifying the value for the type attribute within
a property element, or the value for odata.type in a POST, the value of Alias is used to refer to
items declared in this model. If absent, DVS assumes that the last segment of the namespace
value is the alias. As a best practice is to explicitly include this.
Version should be set to a value of the form n.m. Where n is an integer major version and m is an
22-Jul-2016
2000/2016
EntitySet
An EntitySet defines one of the resources available from the VS. Each EntitySet references one
EntityType.
The Name attribute value will be the name of the collection sets that are the first URL segment
after the base path. By convention the name that is used is the plural of the Entity Type Name. If
you want to define a collection of books, give the Entity Type the Name of Book and the Entity Set
the Name of Books. However, the name space for Entity Sets and Entity Types are separate and
can share the same name. It is often the case where the plural of an Entity Type name is the same
as the singular. For example, Personnel.
The EntityType attribute is the Name of the EntityType for this EntitySet.
EntityType
An EntityType element and its nested elements specify the details about the structure of a resource
and maps to a TABLE in the underlying database. In most cases, a EntityType references a single
EntitySet. However it does not have to be. Having a Hidden EntityType is useful in the specific case of
supporting many to many relationships. Where the most efficient representation is to have an
internal table that contains the keys for the two Entities being associated.
The Name attribute value is the identifier that is used when referring to the EntityType . By
convention it is a non-plural noun describing the content. For example, Author.
The optional DBTable attribute allows specification of the name of the TABLE supporting the
EntityType. If omitted, the TABLE name is an upper case version of the Name value. See the Order
EntityType for an example where the table name does not use the default.
The optional CustomPropertiesEnabled attribute if set to the value true enables the run-time
addition of custom properties to this Entity Type in a way that is not part of the OData standard,
but which is part of the feature set for DVS.
The optional CustomPropertiesName attribute allows specification of the name of a special
collection property that contains a set of name value pairs for the custom properties if
CustomPropertiesEnabled is set to true. This name must not be the same as the name of another
Property or Navigation Property for the Entity Type. See the Order EntityType for an example of
this usage. If CustomPropertiesEnabled is set to true, and CustomPropertiesName is not part of
the EntityType definition, then the custom properties appear inline with the statically defined
Properties for the EntityType. See the WorkTeam EntityType for an example of this usage. See
Custom Properties in OData Dynamic Virtual Service Features for (see page 1967) more
information about custom properties.
An EntityType contains one of more nested property elements, and zero or more NavigationProperty
elements.
See the definition for the Membership EntityType for an example of a hidden Entity Type being used
to generate an internal table for use is a ma ny to many navigation.
22-Jul-2016
2001/2016
Note: Management of the content of these tables is handled implicitly by DVS. Do not
modify the contents directly.
Property
The Property element describes the individual data items that comprise the resource and map to a
database COLUMN within the TABLE.
The mandatory Name attribute is simply the name for the data item. It must be unique with the
names of the Properties, and Navigation properties for this EntityType.
The mandatory Type attribute specifies the format of the data. Types can be either base Types,
Complex Types, EnumTypes or Collections of base Types, Complex Types, or EnumTypes.
The following supported base types include:
"Edm.String" a text string.Edm.Boolean" a Boolean value"Edm.Date" a date value. Input format is '
YYYY-MM-DD', for example: '2014-09-15'.
"Edm.DateTimeOffset" a date-time value. Full Input format is 'YYYY-MM-DD[T]HH:MM:SS.sss[+-]
ZZZ', for example, '2013-10-21T12:10:43.123' format, but sss (milliseconds), and SS.sss (seconds
and milliseconds). The timezone offset can be omitted. Either a T, or a space (" ") can be used to
separate the date portion from the time portion. All other values are mandatory, but Months,
Days, Hours can omit leading zeros.
"Edm.Decimal" a decimal numeric value (for example, 3.14). When in putting a decimal literal,
you can add a d suffix to indicate clearly this is a decimal and not a double (for example, 3.14d).
"Edm.Double" a double (floating-point) numeric value.
"Edm.Int32" an integer numeric value.
To indicate that a Property is a collection, set the value of Type to Collection(type). Where type is the
qualified name of the type of the object which composes the collection. For example, the SkillSet
Property in Bookshop.Personnel is a collection of strings as has Type="Collection(Edm.String)".
The value of Type can also be the name of a Complex Type or an Enumerated Type that is defined in
your schema. Both the Schema and the Name of the Complex Type or EnumType must be specified
using the format "Alias.TypeName". For example, the ContactInfo Property in Customer has Type="
Bookshop.ContactInfo".
The optional MaxLength attribute is used with the Edm.String type to specify the maximum
length that is allowed for the string.
The optional DBColumn attribute can specify the name of the COLUMN in the database. If absent,
COLUMN name is the property name in upper case.
22-Jul-2016
2002/2016
The optional Key attribute indicates which Properties can be specified as a key predicate in a
collection navigation. For example, the property that would be compared against the value x in
the following URL, http://myserver:9999/basepath/entityset( (http://myserver:9999/basepath
/entityset()x). At least one property MUST have the Key attribute set to true. These properties
form the PRIMARY KEY for the TABLE in the database.
The optional DefaultValue attribute if present holds the value that is used to set the value of the
property if the property is not explicitly given a value in a POST, or PUT request body. The value
that is specified is interpreted as a SQL DEFAULT expression. A string literal default must be
specified within single quotes. See the ShipVia Property in the Order Entity Type, for an example
of a string literal default. This convention also allows you to set the value to and expression, or
SQL function, such as Current_Timestamp(). This convention is often useful for automatically
generating values. See the Posted Property in the Comment Entity Type for an example.
The optional Nullable attribute if set to false indicates that the property is required. If absent or
set to true, the property can be omitted from POST and PUT request bodies. The value is to null
or the value that is specified for DefaultValue.
The optional Generated attribute if set to once it indicates that the value of this Property is
automatically generated by DVS when the record is first created, and any value that is passed by
the user is ignored. If set to always, then the value generation happens each time that the record
is updated.
The optional GenMethod attribute if set controls how a generated property generates its value.
Valid values for this attribute are Init, or Sequence, with default Init. If Init then the value from
the DefaultValue attribute is used. If Sequence then the value is created using a unique
monotonically increasing integer which starts at 100.
Note: All properties in all entities share the same sequence generator. There is no
guarantee that records added to the same entity will be given sequential numbers.
The optional GenPattern attribute if set allows the user apply a format specifier to the sequence
number to create a string key. The value of GenPattern is a format string using the same syntax as
the Java String.format method. The format value must generate a unique value from a unique
integer input. In practice this means that the pattern should include a "%d", or "%x" format as
part of the specification. GenPattern is only used if the Property is of type String, and GenMethod
is "Sequence", it is otherwise ignored. See the Id Property of Personnel f or an example of how
Generated, GenMethod, and GenPattern work together.
NavigationProperty
The NavigationProperty element describes the relationships between EntityTypes and defines the
allowable navigation from this EntityType.
The Name attribute is the identifier of the NavigationProperty. It must be unique with the scope
of names that are used by any of the properties and navigation properties for this entity type.
This also determines the string used for the resource segment in a URL that for this navigation.
The Type attribute specifies the name of the destination EntityType in the navigation.
The Relationship attribute specifies the name of the association that contains the database
22-Jul-2016
2003/2016
Association
An Association element specifies the implementation details of one (for unidirectional navigations),
or two (for bidirectional navigations) Navigation Properties.
The Name attribute must be unique within Association elements, and must match the
RelationShip value for the affiliated navigation properties.
The DBLinkTable attribute MUST be the name of one of the EntityType TABLE names when the
navigation is one to one or one to many. If the navigation is many to many, then this value MUST
be the TABLE name of the intermediate table which holds the keys of the two Entities that are the
end points of the navigation. See the Worker_Team Association element definition for an
example of this usage. If not many to many, and Properties exist in both tables that can be used
to associate records of the two Entity Types, this value MUST be the name of the table on which
the database referential integrity constraint is placed. See the Author_Book Association element
definition for an example of this case. Finally, in an association is for a navigation to and from the
same Entity Type (and Table). The value is the table name of the one table involved. See the
Personnel_Supervisor or Personnel_Staff Association element definitions for an example.
The DBJoinOn attribute MUST be a list of one or more JOIN pairs of the form TABLE1.COLUMN1=
TABLE2.COLUMN2.
The simplest case is where the association is between two different entities and a property exists in
both Entity types that can be compared for equality. For example, see the Author_Book Association
element definition for an example of this case.
If multiple properties are needed to connect two entities that both contain the properties that can be
compared for equality, then each JOIN pair is a separate entry into the comma-separated list.
In the case where an association is for a navigation property that points back to the same Entity Type,
the JOIN pair looks like TABLE1.COLUMN1=TABLE1.COLUMN2 and which Property COLUMN has the
role of COLUMN1 and which has the role of COLUMN2 effects the results that are returned from the
navigation property. The COLUMN1 role should be the Property COLUMN that should be matched for
the Parent record. For example, the Navigation Property Supervisor in Personnel has the semantics of
pointing to the Personnel record of the supervisor for a given Personnel record, while the Navigation
Property Staff has the opposite meaning. As such each of the navigation properties required a
separate Association element (Personnel_Supervisor and Personnel_Staff). Personnel_Supervisor has
a DBJoinOn value of "PERSONNEL.SUPERVISORID=PERSONNEL.ID" because SUPERVISORID has the
key for the supervisor's Personnel record, so DVS processed from the employees record to the
supervisors record. Conversely, Personnel_Staff has a DBJoinOn value of "PERSONNEL.ID=PERSONNEL.
SUPERVISORID" because the intent is to match all records whose SUPERVISORID matches the
supervisor's Personnel record.
Finally in the case of many to many navigation properties, or navigation properties where there do
not exist properties in each entity type that can be matched together, the JOIN pair list must contain
22-Jul-2016
2004/2016
EnumType
The EnumType is a way of declaring a data type that only accepts certain values.
The Name attribute when combined with the namespace Alias is used as the type value for those
properties which are using this EnumType. For example, see the status enumtype and the status
property in order .
The optional attribute UnderlyingType which can have the value of any integer type or Edm.String
. If absent the default is Edm.String. This controls the type of the database column that is created
for any properties declared to use the EnumType.
In addition, an EnumType declaration must include one or more member elements. Each member
element must include a name attribute, which is used as one of the permissible values for
Properties declared to use the EnumType, and and optional value attribute, whose value is the
numeric sort weight that is given to this member. If absent, the sort weight is one higher than the
sort weight of the previous member. The sort weight starts at zero where there is no previous
explicit declaration.
ComplexType
A ComplexType is a means by which related properties can be grouped and referenced as a whole.
The name attribute when combined with the namespace Alias is used as the type value for those
properties which are using this ComplexType.
In addition, an ComplexType declaration must include one or more property elements. These
property declarations cannot include generated values.
Metadata declaration
You must define top-level schemas containing type definitions for all EntityTypes and EntitySets.
Schemas must conform to the schema format in {+} (http://json-schema.org/draft-04/schema)http://jsonschema.org/draft-04/schema+. In order to identify key fields, each schema definition must have an
additional member (primaryKeys), containing a list of primary key property names.
For example:
- book: |
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
22-Jul-2016
2005/2016
All resource paths must be defined contiguously, according to standard OData format. Segmented
path definitions are not handled.
For example:
/books:
get:
description: Get a list of all of the books in the system
responses:
200:
Body
:
/books({id}):
get:
description: Get a specific book
responses:
200:
Body
:
22-Jul-2016
2006/2016
Sample Data
Sample data must be inserted as JSON and is only considered when associated with a GET method for
a resource. The associated schema name is specified within the application/json body type section.
For example, data that are associated with an entity set should look like the following information:
/books:
get:
description: Get a list of all of the books in the system
responses:
200:
body:
application/json:
schema: books
example: |
{
"size": 10,
"books": [
{ "id": 1, "name": "The Hobbit; or, There and
Back Again", "isbn": "054792822X", "author_id": 1 },
{ "id": 2, "name": "The Fellowship of the
Ring", "isbn": "B007978NPG", "author_id": 1 },
{ "id": 3, "name": "The Two Towers", "isbn":
"B007978PKY", "author_id": 1 },
{ "id": 4, "name": "The Return of the King",
"isbn": "054792819X", "author_id": 1 },
{ "id": 5, "name": "1984", "isbn":
"0451524934", "author_id": 2 },
{ "id": 6, "name": "Animal Farm: A Fairy
Story", "isbn": "B003K16PUU", "author_id": 2 },
{ "id": 7, "name": "The Sun Also Rises",
"isbn": "0743297334", "author_id": 3 },
{ "id": 8, "name": "For Whom the Bell Tolls",
"isbn": "0684803356", "author_id": 3 },
{ "id": 9, "name": "The Old Man and the Sea",
"isbn": "B000FC0SH8", "author_id": 3 },
{ "id": 10, "name": "A Farewell To Arms",
"isbn": "0684801469", "author_id": 3 }
]
}
Sample data that are associated with a single entity should look like the following information:
/books({id}):
uriParameters:
id:
description: Book ID
type: integer
get:
description: Get a book
responses:
200:
body:
application/json:
schema: book
example: |
{
"id": 1, "name": "The Hobbit; or, There and Back
Again", "isbn": "054792822X", "author_id": 1
}
22-Jul-2016
2007/2016
Prerequisites for Deploying Virtual Service Using DVS Assistant and DevTest Solutions.
The following prerequisites are required:
DVS Assistant Eclipse plug-in is installed.
OData DVS is deployed into the hotDeploy folder of the target VSE.
Access to an AEDM or RAML configuration file or an AEDM or RAML configuration file was
created.
The configuration file describes the entities and navigation properties that your virtual service
uses. See Design Your Virtual Service (see page 1999) for more information.
See Install Dynamic Virtual Service (see page 1994) for more information about installing DVS.
22-Jul-2016
2008/2016
Note: If you extract the contents of your MAR file to view in DevTest Workstation,
do not extract contents into the same folder where the MAR resides. The DVS
Assistant uses this location to build a temporary image of the MAR file which it
cleans up afterwards. If your project is located there, your project is removed as
part of the clean-up.
Listen port: Integer port value. Specify a value that is not used on the systems where your
VS is deployed.
Base URL: Base part of the URL for your virtual service.
Specify Service Model File: Full file specification for the configuration file which describes
the VSE. The AEDM or RAML buttons display which files are shown when browsing to
select the Service Model file. The selected buttons also determine how that file is
processed.
3. If the plug-in has been configured to populate transactions, preview the valid resource paths
by right-clicking a column header in the Virtual Service Transactions table and selecting
Populate All Transactions.
4. Click Generate VS to create your MAR file.
22-Jul-2016
2009/2016
You can access and have created a RAML configuration file describing the entities and navigation
22-Jul-2016
2010/2016
Note: Do not deploy the VSM file. Deploying the VSM file deploys the VSM only and not
the supporting data file which causes the virtual service to fail. Typically you see the
following exception, but other errors are possible.
22-Jul-2016
2011/2016
Next Steps
You can now access the virtual service using any RESTFUL client through URL http://
server_hosting_LISA_VSE:interger_port_specified/base_path_specified.
See OData Virtual Service Features (see page 1967) for a description of the supported OData feature.
See Manage Your Virtual Service Data (see page 2012) for more information about how to manage
data.
2012/2016
Note: Older projects can have data stored in a folder named casd.data. The folder that is
used can be determined by examining the DDME_DATA_DIR LISA variable in projects.cfg.
OK
Body
Description
Method
succeeded
Example
id
22-Jul-2016
2013/2016
GET
/casd_vs_admin
/Checkpoints
('new.sql')
Results:
Res HTTP- HTTPult Status- StatusCode
Text
Conte Body
ntType
Description
SU 200
CC
ESS
OK
FAI 404
LU
RE
Not
Found
FAI 500
LU
RE
Example
id St The name of the script that is used to initialize a new datastore. The id key may
ri not be specified. The associated value is a quoted string value, indicating the
n name of an existing DataStore initialization script.
g
PUT
/casd_vs_admin
/Checkpoints
('new.sql')
Results:
Res HTTPult StatusCode
HTTPContent Body
Status-Text -Type
Description
SUC 204
CESS
No
Content
(none) (none)
FAIL 500
URE
Internal
Server
Error
text
/plain
Message
describing
failure
2014/2016
Example
id S The name of the script that is used to initialize a new datastore. The id key can
tr or cannot be specified. The associated value is a quoted string value, indicating
in the name of an existing DataStore initialization script.
g
DELETE
/casd_vs_admin
/Checkpoints
('new.sql')
Results:
Resu HTTP-S tatu HTTPlt
s-Code
StatusText
Content- Body
Type
Description
SUCC 204
ESS
No
Content
(none)
None
FAIL 403
URE
Forbidden text
/plain
Message
describing
failure
FAIL 404
URE
Message
describing
failure
Unsupported Requests
** Any requests other than the requests documented previously return a HTTP-Status-Code of 405
(Method Not Allowed)*
Back up Data
To back up DVS data for a DVS DevTest VS, make a copy of the DVS data folder for that service.
Note: If the service is running, any updates that are not yet written to an SQL script are not
preserved.
22-Jul-2016
2015/2016
Additional PDFs
This page provides access to a PDF version of each section in this space. These PDFs are subsets of
the larger PDF that you can access from the PDF option at the top of each page.
Release Notes
Installing
Getting Started
Using
Agents
DevTest CICS Agent
DevTest LPAR Agent
Administering
Reference
22-Jul-2016
2016/2016