Skip to main content

Hierarchical Delta Debugging Framework

https://badge.fury.io/py/picireny.svg https://travis-ci.org/renatahodovan/picireny.svg?branch=master

Picireny is a Python 3 implementation of the Hierarchical Delta Debugging (HDD in short) algorithm adapted to use ANTLR v4 for parsing both the input and the grammar(s) describing the format of the input. It relies on picire to provide the implementation of the core Delta Debugging algorithm along with various tweaks like parallelization. Just like the picire framework, picireny can also be used either as a command line tool or as a library.

Both Hierarchical Delta Debugging and Delta Debugging automatically reduce “interesting” tests while keeping their “interesting” behaviour. (E.g., “interestingness” may mean failure-inducing input to a system-under-test.) However, HDD is an improvement that tries to investigate less test cases during the reduction process by making use of knowledge on the structure of the input.

The tool (and the algorithm) works iteratively in several ways. As a first step, it splits up the input into tokens and organizes them in a tree structure as defined by a grammar. Then, iteratively, it invokes Delta Debugging on each level of the tree from top to bottom, and DD is an iterative process itself, too. Finally, the nodes kept in the tree are “unparsed” to yield a reduced but still “interesting” output.

Requirements

  • Python >= 3.4

  • pip and setuptools Python packages (the latter is automatically installed by pip).

  • ANTLR v4

  • Java SE >= 7 JRE or JDK (the latter is optional, only needed if Java is used as the parser language)

Install

The quick way:

pip install picireny

Alternatively, by cloning the project and running setuptools:

python setup.py install

Usage

picireny uses the same CLI as picire and hence accepts the same options. On top of the inherited ones, picireny accepts several further arguments:

  • --grammars (required): List of grammars describing the input format. (You can write them by hand or simply download them from the ANTLR v4 grammars repository.

  • --start-rule (required): Name of the rule where parsing has to start.

  • --antlr (optional): Path the ANTLR tool jar.

  • --parser (optional): Language of the generated parser. Currently ‘python’ (default) and ‘java’ targets (faster, but needs JDK) are supported.

  • --islands (optional): File describing how to process island grammars if needed.

Example usage to reduce an HTML file:

picireny --input=<path/to/the/input.html> --test=<path/to/the/tester> \
         --grammars "HTMLLexer.g4 HTMLParser.g4" --start-rule document \
         --parallel --subset-iterator=skip --complement-iterator=backward

Compatibility

picireny was tested on:

  • Linux (Ubuntu 14.04 / 15.10)

  • Mac OS X (OS X El Capitan - 10.11).

Metadata

Release files for picireny 17.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for picireny 17.7
File Size Uploaded
picireny-17.7.tar.gz 35.0 kB Details

Release files / picireny-17.7.tar.gz

Download URL picireny-17.7.tar.gz
Size 35.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f77b5fed4bd531e023d8fa0f58fba809905fd9736346cd1c9a76233e3bc15cc9
BLAKE2b-256 checksum
How to use checksums
a52d376c65c6fb860cfc94651da2494d6316d38e03b301a8257001eef3d148ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

21.8

2 release files

21.3

1 release file

19.3

1 release file

18.10

1 release file

18.2

1 release file

17.10

1 release file

This release

17.7 This release

1 release file

17.1

1 release file

16.12

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page