Apama Helper Classes for PySys¶
So that you can easily create tests for your Apama applications, Apama distributes a copy of the open-source “PySys” system testing framework.
We also provide some additional classes that use the functionality provided by PySys to make it
easy to work with Apama correlators
, IAF adapters
, Ant builds
,
Apama project directories
and (Linux-only) Docker containers.
Getting Started¶
When creating a PySys test project for use with Apama, use the apama
project template which will includes
an Apama-specific template for new testcases, and (optional) EPL code coverage reporting:
mkdir tests
cd tests
pysys makeproject --template=apama
Now create your first testcase:
pysys make MyApplication_001
This will create a MyApplication_001
subdirectory with a pysystest.py
file holding both the test descriptor
(including its title), and a PySysTest
class where you can add the logic to execute
your test, and to
validate
that the results are as expected.
Edit the generated pysystest.py
and use methods on the apama.testplugin.ApamaPlugin
class (whose members are
available using self.apama.XXX
) to start a correlator and inject your application into it, for example:
correlator = self.apama.startCorrelator()
correlator.injectEPL([self.appHome+'/monitors/foo.mon'])
For validation, you will want to make use of standard PySys methods such as
waitForGrep
, assertGrep
and
assertThatGrep
to validate
the expected the correlator log messages, and apama.testplugin.ApamaPlugin.extractEventLoggerOutput()
if you need to
check the events sent by your application. You can read more about the available PySys methods in the pysys.basetest
documentation.
A set of sample PySys testcases for Apama can be found in the samples/pysys
directory of your Apama installation.
To run your first test, use pysys run
:
pysys run 1
When using the apama.coverage.EPLCoverageWriter
you can automatically generate an HTML code coverage report for your
EPL application like this:
pysys run -XcodeCoverage
Reference¶
The following modules are provided: