tree: 90b86415ae5f078400f1a6f9f79fe9248b335924 [path history] [tgz]
  1. BUILD.gn
  2. README.md
  3. string_demo.cc
  4. system_status.cc
  5. system_status.h
  6. system_status_test.cc
applications/strings/README.md

Unit Tests & Strings

00:
Setup

Intro + setup.

01:
Blinky

Getting to blinky.

02:
Testing

Writing tests.

03:
RPC

Calling RPCs.

04:
KVS

Key Value Store.

05:
FactoryTest

Testing in the factory.

Build and Flash

Instructions are the same as flashing blinky but passing in a different .elf.

  1. Run the compile with pw watch out or ninja -C out.

  2. Flash the test .elf

    arduino_unit_test_runner --config out/arduino_debug/gen/arduino_builder_config.json --upload-tool teensyloader --verbose --flash-only out/arduino_debug/obj/workshop/02-string-functions/bin/string_demo.elf
    
  3. Tail the output with miniterm, (use Ctrl-] to quit).

    python -m serial.tools.miniterm --raw - 115200
    

    You should see something like:

    $ python -m serial.tools.miniterm --raw - 115200
    --- Available ports:
    ---  1: /dev/ttyACM0         'USB Serial'
    --- Enter port index or full name: 1
    --- Miniterm on /dev/ttyACM0  115200,8,N,1 ---
    --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    INF  Teensy Time: RTC has set the system time.
    INF  Offs.  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  Text
    INF  0000: 53 75 70 65 72 20 53 69 6d 70 6c 65 20 54 69 6d  Super Simple Tim
    INF  0010: 65 20 4c 6f 67 67 69 6e 67 21 00                 e Logging!.
    INF  2020-11-04 14:35:35
    INF  2020-11-04 14:35:36
    INF  2020-11-04 14:35:37
    INF  2020-11-04 14:35:38
    INF  2020-11-04 14:35:39
    
    --- exit ---
    

    All tests are set to use plain text logging. This is specified by the pw_log_BACKEND variable in the target_toolchain.gni files. For example the arduino_debug_tests toolchain in $dir_pigweed_experimental/targets/arduino/target_toolchains.gni defines: pw_log_BACKEND = "$dir_pw_log_basic"

Exercise

Goal: Write a test for the GetStatusString() function.

It can be added to /workshop/02-string-functions/system_status_test.cc.

Runing Tests

Run a Single Test Manually

After compiling use arduino_unit_test_runner to flash and check test output.

Teensy

arduino_unit_test_runner --config out/arduino_debug/gen/arduino_builder_config.json --upload-tool teensyloader --verbose out/arduino_debug/obj/workshop/02-string-functions/test/system_status_test.elf

stm32f429i_disc1

stm32f429i_disc1_unit_test_runner --verbose out/stm32f429i_disc1_debug/obj/workshop/02-string-functions/test/system_status_test.elf

Using the Test Server.

  1. Make sure the pw_arduino_use_test_server=true build arg is set.

  2. Start the unit test server for your board.

    Teensy

    arduino_test_server --verbose --config-file ./out/arduino_debug/gen/arduino_builder_config.json
    

    stm32f429i_disc1

    stm32f429i_disc1_test_server --verbose
    
  3. In a separate terminal start pw watch.

    pw watch out