September 2015¶
Sept 22, 2015¶
Modules |
Versions |
|---|---|
|
v2.1.1 |
|
v2.1.1 |
Upgrade Instructions¶
if you are upgrading from
v2.0.1+, it is pretty straightforward:bash$ pip install --upgrade ats
if you are upgrading from a lower version, please refer to
v2.0.0andv2.0.1upgrade instructions first.
Changes¶
added demo scripts to
examples, including v2.1.0 demo scripts.max_failuresargument inaetestis now “exclusive” as opposed to “inclusive” after much controversy. Eg, if-max_failure 5, then as soon as the 5th testcase fails, the script will abort.
Sept 17, 2015¶
Modules |
Versions |
|---|---|
|
v2.1.1 |
|
v2.1.1 |
Upgrade Instructions¶
if you are upgrading from
v2.0.1+, it is pretty straightforward:bash$ pip install --upgrade ats
if you are upgrading from a lower version, please refer to
v2.0.0andv2.0.1upgrade instructions first.
Bug Fixes¶
reverted
ats.easypybehavior where if-testbed_fileis not provided,testbedparameter in testscript isNone.fixed a merge error in
ats.connectionscausing crashes in python-2
Sept 15, 2015 - pyATS v2.1.0¶
Announcing the release & availablility of pyATS v2.1.0. This is a feature
release, intended to be mostly backwards compatible to v2.0.0+, introducing
new features & fixing old bugs/limitations
Please take a moment to study this changelog.
Modules |
Versions |
Comments |
|---|---|---|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
new module |
|
v2.1.0 |
|
|
v2.1.0 |
new module, only available Python-3 |
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
|
|
v2.1.0 |
Upgrade Instructions¶
if you are upgrading from
v2.0.1+, it is pretty straightforward:bash$ pip install --upgrade ats
if you are upgrading from a lower version, please refer to
v2.0.0andv2.0.1upgrade instructions first.
Content¶
The major driver behind v2.1.0 is the support for asynchronous execution
using multiprocessing, refactoring easypy for modularity and better
plugins support, introducing bringup module for automating logical
topology/device orchestrations, and various aetest improvements & features.
major refactoring to
easypyruntime engine’s interal infrastructure.modularity in internal code
revised error catching, propagation & logging mechanisms
support for multiprocessing & parallel executing tasks
support for customizable email notification report
support for user plugins & plugin run stages
revamped
runtimestate query mechanismbetter unittests
new module
asyncsupport for hands-off parallel function calls
new module
bringupsupport for automated orchestration of logical testbed devices using XRUT
new
aetestscript execution featuresupport for launching an interactive debugger automation on failures
support for maximum testcase failures before script termination
support for requisite testcase (testcase must-pass)
support for testcase run-order randomization
complete removal of
self.script_argscomplete removal of
Testcase.Subtestfeature and definitions
internal overhauls in multiple components for multiprocessing-friendly and awareness.
fork-aware
atslogloggersfork-aware
aereportclients
~100 pages of new, updated, self-explanatory documentation for your weeknights and weekend reading pleasures.
a whole slew of bug fixes
and of course, introducing new bugs.
Easypy Changes¶
The internal refactoring of Easypy source code does not modify its external interfaces (eg, cli arguments, jobfile apis, etc). The user experience should be uplifted without backwards compatibility issues.
no external argument changes
no jobfile class/interface changes
easypy source code is now fully modular.
Tasks system overhauled
all jobfile are now run within its own child process (encapsulation). (note that as a side-effect,
pdbwithin child processes will fail unless/dev/stdinis re-opened. Refer to PDB & Multiprocessing for details)new
Taskclass enabling both sequential and asynchronous execution of tasks within a jobfile.Taskclass is designed to provide user full control of task with the jobfile.built-in
TaskManagerassociated with all jobfile tasks, automatically notifies the user when tasks are dangling.
Email Notification feature overhauled
now sends you an exception notification when
easypycomponents/jobfile crashed.support for customizing the default text email report by adding and removing sections
support for subclassing & creating your own MIME RichText/HTML emails
Plugin System feature overhaled
support for loading user’s custom plugins and its configurations through YAML file defined via environment variable
EASYPY_PLUGIN_CONFIGsupport for running plugins at various fixed stages during execution:
pre_job,post_job,pre_taskandpost_task.support for plugin argument parsers, and combining currently active plugin’s parsers into the master help output displayed using
easypy -h.plugin documentation
the runtime environment created by
easypyhas been reviewed for multiprocess-friendliness. Multiple components & internal modifications were done in order to accomodate process forks.more readily available runtime state information
dangling child processes at the end of
easypyexecution are now quietly terminated. Turn on-logleve=DEBUGto see the massacre in action.
AEtest Changes¶
new argument
-pdb, allowing AEtest to automatically start an interactive debugging session when a failure/execption is caught. Refer to PDB on Failure documentation for details.new argument
-random, allowing AEtest testscripts to run its testcases in randomized execution order. Refer to Testcase Randomization documentation for details.new argument
-max_failures, allowing AEtest to automatically terminate the testscript if number of testcases failures exceeds the provided value. Refer to Maximum Failures for details.support for requisite testcases (a.k.a testcase must-pass). A testcase with
must_passlabel, if failed, will cause the whole script to terminate. Refer to Requisite Testcase documentation for details.Testcase.Subtestand the ability to define subtests within testcases is now competely removed (as discussed in v2.0.0 release note).self.script_argsis now completely removed. Use Test Parameters instead (as discussed in v2.0.0 release note).calling
self.<resultapi>()withgoto=[]within steps should now work as intended.
New Modules¶
The following new modules have been introduced in pyATS v2.1.0 release.
asyncModule for asynchronous (parallel) execution support. This module acts as reminder to all core developers that asynchronous execution in pyATS requires dedicated code support, offers a central location for expanding on the mindset behind pyATS multiprocessing, and offers a hands-off approach to calling functions and methods in parallel using Parallel Call class.
More libraries and apis will be added to this module as we go.
Read
asyncdocumentation here: Asynchronous Library.bringupModule for automated logical testbed/device orchestration. This module leverages the current abilities of XRUT to orchestrate virtual testbeds, integrating its features & capabilities into pyATS, allowing
easypyscript runs to automatically bring-up and tear-down virtual testbeds before and after the script run.Read
bringupdocumentation here bringup.
Multiprocessing Tuneups¶
atslog.TaskLogHandlernow supports automatic on-fork creation of new log files.enable/disable using
enableForked()anddisableForked()methods.by default, each Easypy task’s TaskLog will has this feature enabled.
aereport.AEClientnow supports automatic re-connect to the reporting server post-fork.enable/disable using
enable_forked()andenable_forked()methods.by default, Easypy and AEtest’s report client instances have this feature enabled.
Misc Changes¶
install script now supports handoff (prompt-free) installation (for automating new pyATS installations)
introduced new supported external PyPI packages and versions:
New and Updated PyPI Packages¶ Package
Versions
Comments
asynctestv0.4.0
used for asyncio testing
pipv7.1.2
setuptoolsv18.3.1
setproctitlev1.1.9
used by AEreport and Easypy
fixed an issue with
examplesandtemplatespackages being built to platform/arch specific wheels.other minor stuff we don’t remember :-(