Skip to main content

Documentation Status Build status MIT license Supported Python Versions Pypi Release Version Sonarcloud Quality Gate Sonarcloud coverage Sonarcloud bugs

A delicious Nanaimo bar

A delicious Python treat that makes on-target testing sweet and satisfying.

Nanaimo is a set of utilities and plugins designed to enable integration of hardware test apparatuses with pytest. This can allow on-target tests to run as part of continuous integration pipelines like Buildkite, Bamboo, or Jenkins.

S32K evaluation boards attached to Raspberry PIs.

Example of S32K dev boards attached to Raspberry PI CI workers running the Buildkite agent and using Nanaimo.

Nanaimo is designed to enable testing of software-defined, physical components in isolation to provide pre-integration verification of software interfaces and behavioral contracts. It adapts asynchronous control and monitoring of these components to fit familiar testing idioms (e.g. x-unit testing) using the popular python test framework, pytest.

Block diagram of Nanaimo's relationship to other components of a typical software build and test pipeline.

Block diagram of Nanaimo’s relationship to other components of a typical software build and test pipeline.

Nanaimo is not a simulation framework and is not designed to support the complexity of a full hardware-in-the-loop platform. Instead it’s focused on testing small integrations with a few hardware components and instruments using concepts, syntax, and frameworks familiar to software engineers. Examples of these small integrations might include verifying a SPI driver for a microcontroller or ensuring the upload time for a serial bootloader meets expected Key-Performance-Indicators (KPIs). To do this Nanaimo abstractions provide async interfaces to hardware either directly using available communication protocols (e.g. serial or IP networks) or by invoking a CLI provided by the instrument vendor. Because of this latter use case some instruments will require additional programs be available in a test environment.

Example scenario using Nanaimo to test an I2C driver for a microcontroller.

Example scenario using Nanaimo to test an I2C driver for a microcontroller.

This design is an amalgam of the TLYF (Test Like You Fly) methodology and the Swiss cheese model of failure analysis. Specifically; Nanaimo facilitates testing on actual or representative hardware for the first integration of software into a part or subassembly. Traditionally software engineers were responsible only for unit-testing and Software-In-the-Loop (SIL) simulation of their code. Nanaimo encourages software engineers to also provide hardware integration tests by enabling Hardware-In-the-Loop continuous-integration (HIL-CI, perhaps?).

Hierarchy of system testing.

Hierarchy of system testing. Nanaimo focuses on part and subassembly testing.

Release files for nanaimo 0.2.5

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

Source distribution (sdist)

Source distribution for nanaimo 0.2.5
File Size Uploaded
nanaimo-0.2.5.tar.gz 56.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nanaimo 0.2.5
File Interpreter ABI Platform
nanaimo-0.2.5-66-py3-none-any.whl Python 3 none any Details

Total release size: 118.8 kB

Release files / nanaimo-0.2.5.tar.gz

Download URL nanaimo-0.2.5.tar.gz
Size 56.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1f0a7a8d9a64978f0206b958dbe4e76eff569b3c97949db856eb7d569ffca319
BLAKE2b-256 checksum
How to use checksums
c544f491f669c60fa70025d2a3d72f53425cbaf4b95970190bf299321aa7029d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.4

Release files / nanaimo-0.2.5-66-py3-none-any.whl

Download URL nanaimo-0.2.5-66-py3-none-any.whl
Size 62.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9aef267a3301a5473352455e03149c7dbfdf87c0e1a00a802eda6378d5ed7fe6
BLAKE2b-256 checksum
How to use checksums
2f8227a60ed7a62f242d88381276a62ce3796942e391e8490da46120d566290c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.4

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

3 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.55

2 release files

0.0.54

2 release files

0.0.53

2 release files

0.0.52

3 release files

0.0.51

2 release files

0.0.50

3 release files

0.0.49

2 release files

0.0.48

3 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

5 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

1 release file

0.0.1

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