mirror of https://github.com/ARMmbed/mbed-os.git
91 lines
3.8 KiB
Markdown
91 lines
3.8 KiB
Markdown
# Table of contents
|
|
|
|
* [greentea-client](#greentea-client)
|
|
* [Concepts](#concepts)
|
|
* [Test suite](#test-suite)
|
|
* [Test case](#test-case)
|
|
* [key-value protocol](#key-value-protocol)
|
|
* [Test example](#test-examplel)
|
|
|
|
# greentea-client
|
|
|
|
`greentea-client` is a client library for [the Greentea test tool](https://github.com/ARMmbed/mbed-os-tools/tree/master/packages/mbed-greentea) when used in an [Mbed OS](https://os.mbed.com/) project.
|
|
|
|
This package implements the client side of the key-value protocol used for communication between the device under test (DUT) and the host. The `Greentea` tool implements the protocol's host behavior. We use [utest](https://github.com/ARMmbed/mbed-os/blob/master/features/frameworks/utest/README.md) as our test harness.
|
|
|
|
```
|
|
DUT <--- serial port connection ---> host
|
|
(client) . (host)
|
|
.
|
|
[greentea-client] . [conn_process] [htrun]
|
|
===== . ================ =========
|
|
| . | |
|
|
| . | |
|
|
| {{ key ; value }} | |
|
|
|------------------------->| (key, value, timestamp) |
|
|
| . |------------------------>|
|
|
| . | |
|
|
| . | |
|
|
| . | |
|
|
| . | |
|
|
| . | |
|
|
| . | (key, value, timestamp) |
|
|
| {{ key ; value }} |<------------------------|
|
|
|<-------------------------| |
|
|
| . | |
|
|
.
|
|
```
|
|
|
|
## Concepts
|
|
|
|
### Test suite
|
|
|
|
A test suite is a binary containing test cases we execute on hardware. The test suite has a beginning and an end (like the `main()` function would. The test suite may pass, fail or be in an error state (for example, if the test suite times out or there was a serial port connection problem).
|
|
|
|
### Test case
|
|
|
|
A test case is contained within a test suite. You can have multiple test cases within a test suite. `unity` assert macros are used to run the checks during the test case. Your test cases may pass, fail or be in an error state.
|
|
|
|
### Key-value protocol
|
|
|
|
The key-value protocol is a protocol specific to the `Greentea` test tool. It is used to send messages (events) between the DUT and the host. Each message consists of a _key_ and _value_ pair. A message is surrounded by double curly braces. The key and value are separated by a semicolon (`;`).
|
|
|
|
For example, the `{{timeout;120}}}` string is a key-value message where the key `timeout` has the value `120`. Both `greentea-client` and `Greentea` understand this format and can detect key-value messages in a data stream.
|
|
|
|
## Test example
|
|
|
|
```c++
|
|
#include "mbed.h"
|
|
#include "greentea-client/test_env.h"
|
|
#include "utest/utest.h"
|
|
#include "unity/unity.h"
|
|
|
|
void test_case_1_func() {
|
|
// Test case #1 body
|
|
// Here you can run your test cases and assertions
|
|
TEST_ASSERT_TRUE(true);
|
|
TEST_ASSERT_FALSE(false);
|
|
}
|
|
|
|
void test_case_2_func() {
|
|
// Test case #2 body
|
|
// Here you can run your test cases and assertions
|
|
TEST_ASSERT_TRUE(true);
|
|
TEST_ASSERT_FALSE(false);
|
|
}
|
|
|
|
const Case cases[] = {
|
|
Case("Test case #1 name", test_case_1_func),
|
|
Case("Test case #1 name", test_case_2_func)
|
|
};
|
|
|
|
status_t greentea_setup(const size_t number_of_cases) {
|
|
GREENTEA_SETUP(5, "default_auto");
|
|
return greentea_test_setup_handler(number_of_cases);
|
|
}
|
|
|
|
void main(int, char*[]) {
|
|
Harness::run(specification);
|
|
}
|
|
```
|