Skip to main content

Infrastructure to use construct Structs in robotframework

Reason this release was yanked:

messed up release process

Project description

robotframework-construct

What is robotframework-construct?

Robot Framework library powered by construct.

A declarative and symmetrical parser and builder for binary data.

Aiming for :rocket: speed, :white_check_mark: reliability, and :microscope: visibility.

Ideally, your binary data becomes as accessible as numbers and strings are in Robot Framework.

Checkout the documentation at robotframework-construct

Use cases

  • Test your production construct specification against a reference implementation of the same protocol.
  • Test your production binary parser/generator against a construct implementation of your binary format.
  • Use your construct specification to:
    • Craft intentionally corrupted data.
    • Fuzz test your binary parsers.
  • Beautifuly access registers, for both reading and writing.

Relationships in the Ecosystem

The number of dependencies is kept low, with no transient dependencies.

This is important as it keeps coordination feasible. Construct is well-developed and not expected to change significantly soon. Robot Framework releases major updates annually, but these are well-managed and communicated.

Construct (https://github.com/construct/construct)

All parsing and generating capabilities come from Construct. No additional parsing/generating code is added; the only code added interfaces Construct with Robot Framework. The way Construct objects are created remains unchanged.

Construct has no non-optional dependencies.

Robot Framework (https://robotframework.org/)

This project connects Construct with Robot Framework. Only official APIs are used, and this project depends entirely on Robot Framework.

Robot Framework has no non-optional dependencies.

Rammbock (https://github.com/MarketSquare/Rammbock)

Rammbock inspired this project, as it was one of the reasons I started using Robot Framework.

Instead of maintaining Rammbock, we chose to integrate Construct.

Reasoning

Both Rammbock and Construct have limited engineering resources, but Construct is currently better supported. Construct also collaborates with Kaitai, engaging communities in C#, C++, and other ecosystems.

Using Construct provides a clear separation between parsing/generating logic and interface code, enabling expansion into other ecosystems.

Installation

The robotframework-construct keyword library is hosted on pypi and can be installed like any pypi hosted python dependency with pip.

pip install robotframework-construct

Limitations

To maintain reusability, Construct specifications must be written in .py files. There are no plans to integrate the Construct DSL into Robot Framework.

Quality Control Measures

Tested examples and acceptance tests using Robot Framework are provided. Unit tests are not a priority.

Mutation Testing

Since this project consists primarily of interface code, it is crucial to catch user errors and produce clear error messages. Mutation testing ensures that all code paths and error messages are tested, supporting efforts to make errors informative.

Project To-Do List

  • Parsing functionality demonstrated with an in-memory BSON object.
  • Parsing functionality demonstrated with a BSON file.
  • Generating functionality demonstrated with an in-memory BSON object.
  • Generating functionality demonstrated with a binary file.
  • Register read/write demonstrated with a mockup register.
  • Receive/transmit network example using DNS.
  • Reflector tool to allow to implement servers using clients.
  • Upload wheel to pypi.
  • Increase test coverage (Mutant killing) of the reflector
  • Segmentise mutation testing to speedup
  • Comment and document the real world example with the USB HID keyboard
  • Add a second real world example with binary interface to Readme
  • Have libdoc documentation online
  • Have libdoc documentation online for all keywords, not only the central ones
  • User guide and tutorials/Article for (https://medium.com/@RobotFramework/).
  • Example on how to breakout of the python ecosystem
  • Midway review with Robot Framework Foundation.
  • Final review with Robot Framework Foundation.

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

robotframework_construct-0.2.0.tar.gz (187.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robotframework_construct-0.2.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file robotframework_construct-0.2.0.tar.gz.

File metadata

File hashes

Hashes for robotframework_construct-0.2.0.tar.gz
Algorithm Hash digest
SHA256 667047a002a7be456d2b7d133036c16b10402da0457dda5de5559dcadf2d11fc
MD5 13dbc147c86051ac092cd43566a7b2ce
BLAKE2b-256 760787a20c6cbe5803198cf31abeaa005611f2ddc676e0b2ba0f105ce88e2a09

See more details on using hashes here.

File details

Details for the file robotframework_construct-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for robotframework_construct-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50313e658ddb8d4047e1e62e4d3bcea5900136ac8ab4f627369e0f44265b29bf
MD5 5408e3db2b893cbea60d042ce72dbc6b
BLAKE2b-256 88227021abece3401cf2c4f4d9fb3e9d7f5c1ede4ce1f722d13bbefa8f058081

See more details on using hashes here.

Supported by

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