Skip to main content

Picireny Hierarchical Delta Debugging Framework

Project description

Hierarchical Delta Debugging Framework

https://badge.fury.io/py/picireny.svg https://travis-ci.org/renatahodovan/picireny.svg?branch=master https://ci.appveyor.com/api/projects/status/jsg8qiflkakbhni1/branch/master?svg=true https://coveralls.io/repos/github/renatahodovan/picireny/badge.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:

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

  • --start (optional): Name of the start rule (optionally prefixed with a grammar name) as [grammarname:]rulename.

  • --replacements (optional): Json file containing rule names and minimal replacement strings (otherwise these are calculated automatically) (see schema).

  • --format (optional): Json file describing the input format (see schema and example). This descriptor can incorporate all the above (--grammar, --start and --replacements) properties, along with the possibility of island grammar definitions. If both --format and the aforementioned arguments are present, then the latter will override the appropriate values of the format file.

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

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

Note: although, all the arguments are optional, the grammar files and the start rule of the top-level parser must be defined with an arbitrary combination of the --format, --grammars, and --start arguments.

Example usage to reduce an HTML file:

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

Compatibility

picireny was tested on:

  • Linux (Ubuntu 14.04 / 16.04 / 18.04)

  • Mac OS X (El Capitan 10.11 / Sierra 10.12 / High Sierra 10.13 / Mojave 10.14)

  • Windows (Server 2012 R2)

Acknowledgement and Citations

picireny is motivated by the idea of Hierarchial Delta Debugging:

  • G. Misherghi, Z. Su: “HDD: Hierarchical delta debugging”, ICSE 2006.

The details of the modernized reimplementation and further improvements are published in:

  • R. Hodovan, A. Kiss: “Modernizing Hierarchical Delta Debugging.”, A-TEST 2016.

  • R. Hodovan, A. Kiss, T. Gyimothy: “Tree Preprocessing and Test Outcome Caching for Efficient Hierarchical Delta Debugging”, AST 2017.

  • R. Hodovan, A. Kiss, T. Gyimothy: “Coarse Hierarchical Delta Debugging”, ICSME 2017.

  • A. Kiss, R. Hodovan, T. Gyimothy: “HDDr: A Recursive Variant of the Hierarchical Delta Debugging Algorithm”, A-TEST 2018.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

picireny-18.10.tar.gz (40.0 kB view details)

Uploaded Source

File details

Details for the file picireny-18.10.tar.gz.

File metadata

  • Download URL: picireny-18.10.tar.gz
  • Upload date:
  • Size: 40.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.4.6

File hashes

Hashes for picireny-18.10.tar.gz
Algorithm Hash digest
SHA256 b3b93aa9fa3ea956301a2fb642595e56ca78dcb4a0d9e21d1a68231b22c330e7
MD5 aaff2ebc21bcd3afee409b9e2282ce88
BLAKE2b-256 89a0908e2e2a428dea723934a33ae69201ff2233fbbbfb83a2bf1bcfdf6396f2

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page