61 lines
1.9 KiB
Markdown
61 lines
1.9 KiB
Markdown
## Arduino Client for MQTT Test Suite
|
|
|
|
This is a regression test suite for the `PubSubClient` library.
|
|
|
|
It is a work-in-progress and is subject to complete refactoring as the whim takes
|
|
me.
|
|
|
|
Without a suitable arduino plugged in, the test suite will only check the
|
|
example sketches compile cleanly against the library.
|
|
|
|
With an arduino plugged in, each sketch that has a corresponding python
|
|
test case is built, uploaded and then the tests run.
|
|
|
|
## Dependencies
|
|
|
|
- Python 2.7+
|
|
- [INO Tool](http://inotool.org/) - this provides command-line build/upload of Arduino sketches
|
|
|
|
## Running
|
|
|
|
The test suite _does not_ run an MQTT server - it is assumed to be running already.
|
|
|
|
$ python testsuite.py
|
|
|
|
A summary of activity is printed to the console. More comprehensive logs are written
|
|
to the `logs` directory.
|
|
|
|
## What it does
|
|
|
|
For each sketch in the library's `examples` directory, e.g. `mqtt_basic.ino`, the suite looks for a matching test case
|
|
`testcases/mqtt_basic.py`.
|
|
|
|
The test case must follow these conventions:
|
|
- sub-class `unittest.TestCase`
|
|
- provide the class methods `setUpClass` and `tearDownClass` (TODO: make this optional)
|
|
- all test method names begin with `test_`
|
|
|
|
The suite will call the `setUpClass` method _before_ uploading the sketch. This
|
|
allows any test setup to be performed before the sketch runs - such as connecting
|
|
a client and subscribing to topics.
|
|
|
|
|
|
## Settings
|
|
|
|
The file `testcases/settings.py` is used to config the test environment.
|
|
|
|
- `server_ip` - the IP address of the broker the client should connect to (the broker port is assumed to be 1883).
|
|
- `arduino_ip` - the IP address the arduino should use (when not testing DHCP).
|
|
|
|
Before each sketch is compiled, these values are automatically substituted in. To
|
|
do this, the suite looks for lines that _start_ with the following:
|
|
|
|
byte server[] = {
|
|
byte ip[] = {
|
|
|
|
and replaces them with the appropriate values.
|
|
|
|
|
|
|
|
|