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.

SEE ALSO