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: