NAME
otaclient - Submits OTA messages to an OTA-conformant server
SYNOPSIS
otaclient
otaclient OTA_Ping.scenario
otaclient --verbose OTA_Ping.scenario
otaclient OTA_PingRQ.xml
otaclient /usr/mycompany/prod/share/ota/xml/OTA_PingRQ.xml
DESCRIPTION
With no other options given on the command line, the "otaclient" command will read the default set of tests configured for it, sumbit messages as appropriate to the configured server, and print out a report card with the results of the tests.
This is useful for exercising (and testing) an OTA-conformant server that you have developed.
In general, this command iterates over the list of files given as arguments. If none are given, then the file "default.tests" is run.
FILE TYPES
There are three kinds of files that the "otaclient" command can process.
*.tests
*.scenario
*.xml
XML Files (*.xml)
Processing an XML file (*.xml) is the most straighforward. It simply reads an XML file, submits it to the servers, and receives a response. This is an important baseline capability.
The contents of an XML file would be any valid XML (presumably an OTA message) such as the following.
<?xml version="1.0" encoding="UTF-8"?>
<OTA_PingRQ
xmlns="http://www.opentravel.org/OTA/2002/08"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opentravel.org/OTA/2002/08 /usr/rubicon/spadkins/src/OTA/Business-Travel-OTA/schemas/2002A/OTA_PingRQ.xsd"
TimeStamp="2002-12-03T11:09:47-05:00"
Target="Production"
Version="2002A"
SequenceNmbr="1" >
<EchoData>Are you there?</EchoData>
</OTA_PingRQ>
Scenario Files (*.scenario)
A Scenario file (*.scenario) presents an intelligent wrapper around a simple XML transfer that makes this much more useful. With a scenario file, you can
* specify a sample XML file as a "template" and then perform parameter
substitution. The actual XML message that is sent might have a different
arrival date, flight number, property code, or city station code (etc.)
from the "template" message.
* set up a sequence of message exchanges where values from one message are
copied into the next message to be sent.
* perform tests along the way to ensure that the returned messages and
the values in them are according to your expectations.
The contents of a Scenario File is something like the following.
VALIDATION ON
INCLUDE defaults.scenario
DOCUMENT OTA_PingRQ.xml
DOCUMENT [rs] = OTA_PingRS.xml
DOCUMENT [rq] = [current]
DEFAULT CONVERSATION{Target} = Production
DEFAULT CONVERSATION{Version} = 2004A
DEFAULT CONVERSATION{SequenceNmbr} = 1
SET CONVERSATION{current_datetime} = SYSTEM{current_datetime}
SET /OTA_PingRQ/@TimeStamp = CONVERSATION{current_datetime}
SET /OTA_PingRQ/@Target = CONVERSATION{Target}
SET /OTA_PingRQ/@Version = CONVERSATION{Version}
SET /OTA_PingRQ/@SequenceNmbr = CONVERSATION{SequenceNmbr}
SET /OTA_PingRQ/EchoData = Hello world!
DOCUMENT[rq]
SEND
TEST ROOT-ELEMENT = OTA_PingRS
TEST /OTA_PingRQ/@xmlns = http://www.opentravel.org/OTA/2002/08
TEST /OTA_PingRQ/@xmlns:xsi = http://www.w3.org/2001/XMLSchema-instance
TEST /OTA_PingRQ/@xsi:schemaLocation =~ "^http://www.opentravel.org/OTA/2002/08 "
TEST /OTA_PingRQ/@TimeStamp >= CONVERSATION{current_datetime}
TEST /OTA_PingRQ/@TimeStamp <= SYSTEM{current_datetime}
TEST /OTA_PingRQ/@Target = CONVERSATION{Target}
TEST /OTA_PingRQ/@Version = CONVERSATION{Version}
TEST /OTA_PingRQ/@SequenceNmbr = CONVERSATION{SequenceNmbr}
TEST /OTA_PingRQ/EchoData = Hello world!
Tests Files (*.tests)
A Tests file (*.tests) describes a sequence of *.tests, *.scenario, and *.xml files which should be run. All of the tests in all of them are accumulated and printed out on the final report card.
The contents of a Tests File is something like the following.
FILE OTA_PingRQ.xml
FILE OTA_Ping-0001.scenario
Raw XML files are not very useful because there are no defined tests and no parameterization. Generally, a Tests File is full of Scenario Files (which contains the tests which get accumulated for the report card) and other Tests Files.
INSTALLATION
CONFIGURATION AND COMMAND LINE OPTIONS
The "otaclient" program may be configured by all the means provided for by the configuration system it uses called "App::Options."
man App::Options
perldoc App::Options
Furthermore, the "otaclient" program and the classes in the Business::Travel::OTA distribution are built on the App-Context Framework (whose documentation is currently not in good order). Information will be provided here with regard to the items necessary to know.
Specifically, this means that if you have installed your the Business::Travel::OTA software under $HOME (i.e. Unix) or "C:\usr" (i.e. Windows), you would set an environment variable, $PREFIX, to that base directory.
If this PREFIX variable were set to /home/mikesmith, then the following section might appear in the "$PREFIX/etc/app/app.conf" file.
[otaclient]
prefix = /home/mikesmith
perlinc = /home/mikesmith/lib/perl5/5.8.4 /home/mikesmith/lib/perl5/5.8.4/i686-linux /usr/local/lib/perl5/site_perl/5.8.4 /home/mikesmith/lib/perl5/site_perl/5.8.4 /home/mikesmith/lib/perl5/site_perl/5.8.4/i686-linux /home/mikesmith/lib
server = default
server_url = http://localhost/cgi-bin/mikesmith/otaserver
dirs = ${prefix}/share/ota/tests:${prefix}/share/ota/scenario:${prefix}/share/ota/xml
default_ota_release = 2006B
transport_class = Business::Travel::OTA::Transport::HTTP
minimal = 0
conf_file = ${prefix}/etc/app/ota.pl
# verbose: Print more detail (0=silent,1=response-xmls,2=all-xmls,3=protocol-info,4=debug)
verbose = 4
As with all App::Options-enabled programs, these variables can be set in the options file (app.conf) and overridden in a more specific options file, in an environment variable or on the command line.
SEARCH PATHS
The "otaclient" program looks for all relative filenames in a list of directories which is configurable with the "dirs" option. The default is to look for all *.xml, *.scenario, and *.tests files in the following directories.
$PREFIX/share/ota/xml
$PREFIX/share/ota/scenario
$PREFIX/share/ota/tests
ACKNOWLEDGEMENTS
* Author: Stephen Adkins <sadkins@therubicongroup.com>
* Copyright: (c) 2005 Stephen Adkins (for the purpose of making it Free)
* License: This is free software. It is licensed under the same terms as Perl itself.