PyModel v 0.90 release notes PyModel is a model-based testing framework for Python. The initial public release, Version 0.80, appeared in January 2010. Version 0.85 in March 2010 added features that support passive testing: automatically checking log files (or other traces collected from instrumented systems) against a model. Version 0.9 adds some new functionality: - programmable domains (including state-dependent domains). - wsgirunner, a simple standalone web server (with no dependencies other than the Python standard libraries), to make it easy to test web applications, including the WebApplication sample in this version. - dotpdf, a command to produce graphic output in PDF files, similar to dotps (for PostScript) and dotsvg (for SVG). Version 0.9 adds two new samples: - populations, to demonstrate programmable domains. - tracemultiplexer, to demonstrate using pymodel as a simulator. Version 0.9 revises two other samples: - WebApplication, add webapp.py, a new web application in Python that works with with WebModel and Stepper in this sample. The webapp.py application is a replacement for the PHP web application from NModel, so testing this sample no longer requires PHP or NModel. The webapp.py application has no dependencies other than the Python standard libraries (it requires no other framework). The webapp.py application can be run by the new PyModel wsgirunner web server, or any other WSGI-compliant server (for example Apache with mod_wsgi). - Socket, add a working Stepper to run tests against actual sockets, add several test suites and test scripts that demonstrate the model and the stepper. Version 0.9 also adds some conveniences: - In test suites, when an action has no return value (the return value is None), the final None can be omitted from action tuples (In the WebApplication sample, compare TestIntSuccess.py to TestIntSuccessNoNone.py). - In pmt, use the new -q --quiet option to suppress voluminous output (in the Socket sample, see test_q.py) - In pmg, use the new -x --noStateTooltip option to suppress tooltips, in order to work around occasional (rare) crashes in the dotsvg graphics program. (This problem has not been observed in any of the samples in this version.) Version 0.9 makes some changes to be more consistent with recommended Python style and programming practices. - The subdirectory in the distribution that contains the core PyModel Python code is now named pymodel, not src. However, the pymodel directory is still not a Python package (it contains no __init__.py), and several shell scripts, and the programs intended to be run from the command line (pma, pmg, and pmt) are still in the pymodel directory, not a separate bin directory. The samples and their tests are still in subdirectories (not packages) under the samples subdirectory. - New code and samples are coded in PEP-8 style. Only class names include uppercase characters. - The PyModel tools now recognize alternatives for special PyModel function and variable names that are coded in PEP-8 style, without uppercase characters. You can now use these identifers: accepting, statefilter (or state_filter), reset, selectaction (or select_action), testsuite (or test_suite), testaction (or test_action) as alternatives to Accepting, StateFilter, Reset, SelectAction, testSuite and TestAction Version 0.9 prepares for future functionality, in particular for observable actions and asynchronous steppers. - ProductModelProgram, ModelProgram, FSM, and TestSuite classes include an ActionEnabled method, which will be used by a future version of pmt to check whether an observable action returned by an asynchronous stepper is enabled. - The src directory contains pmt_observables.py, an experimental version of pmt that handles observable actions. There are no samples in this version that use this functionality. (Future versions of pmt may not be compatible with this experimental version.) July 2011