mbed-os/TESTS/network/interface/README.md

167 lines
4.9 KiB
Markdown
Raw Blame History

Network Interface test plan
========================
Target API
----------
The target for this plan is to test:
- [NetworkInterface.h](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/NetworkInterface.h)
Tools to be used
----------------
- Mbed OS.
- Standard Mbed OS development tools as described in [Arm Mbed tools overview](https://os.mbed.com/docs/latest/tools/index.html).
Test environment
----------------
- [Greentea](https://os.mbed.com/docs/mbed-os/latest/tools/greentea-testing-applications.html)
Test case priorities
--------------------
Please refer to the following table for priorities of test cases. Priorities
are labeled as MUST and SHOULD. MUST means this is a requirement and
therefore mandatory to pass the test. SHOULD means it is recommended to
pass the test if the driver implements the feature in question.
| | Test case | Priority |
|-----|-----------------------------------------|----------|
| 1 | NETWORKINTERFACE_CONN_DISC_REPEAT | MUST |
| 2 | NETWORKINTERFACE_STATUS | MUST |
| 3 | NETWORKINTERFACE_STATUS_NONBLOCK | MUST |
| 4 | NETWORKINTERFACE_STATUS_GET | MUST |
Building test binaries
----------------------
For testing the board and driver, test against the Mbed OS
master branch to get the most recent, up-to-date test cases and drivers.
To create a build environment:
```.sh
mbed new network_interface_test
cd network_interface_test
cd mbed-os
git checkout master
cd ..
```
Now build test binaries:
```.sh
mbed test --compile -t <toolchain> -m <target> -n mbed-os-tests-network-interface
```
Running tests
-------------
When device is connected to network, or in case of wireless device near
the access point.
```.sh
mbed test -n mbed-os-tests-network-interface
```
Test cases for NetworkInterface class
-------------------------------------
### NETWORKINTERFACE_CONN_DISC_REPEAT
**Description:**
Test `NetworkInterface::connect()` and `NetworkInterface::disconnect()`
**Preconditions:**
1. Network interface is initialized.
**Test steps:**
1. Connect interface
2. Disconnect interface
3. Repeat connect and disconnect steps 1 to 2 four times
**Expected result:**
`Connect()` and `disconnect()` calls return NSAPI_ERROR_OK.
### NETWORKINTERFACE_STATUS
**Description:**
Test `NetworkInterface::attach()` and status indications.
**Preconditions:**
1. Network interface is initialized
2. Status callback is attached to network interface
3. Network interface is on blocking mode
**Test steps:**
1. Connect interface
2. Check that interface indicates status NSAPI_STATUS_CONNECTING
3. Optional: check that interface indicates status NSAPI_STATUS_LOCAL_UP (whether this is indicated depends on network interface type)
4. Check that interface indicates status NSAPI_STATUS_GLOBAL_UP
5. Disconnect interface
6. Check that interface indicates status NSAPI_STATUS_DISCONNECTED
7. Repeat connect and disconnect steps 1 to 6 four times
**Expected result:**
Callback statuses are correct. `Connect()` and `disconnect()` calls return NSAPI_ERROR_OK. Note: network interface may indicate same status several times a row depending on network interface type. This will not fail the test.
### NETWORKINTERFACE_STATUS_NONBLOCK
**Description:**
Test `NetworkInterface::attach()` and status indications on non-blocking mode.
**Preconditions:**
1. Network interface is initialized
2. Status callback is attached to network interface
3. Network interface is on non-blocking mode
**Test steps:**
1. Connect interface
2. Check that interface indicates status NSAPI_STATUS_CONNECTING
3. Optional: check that interface indicates status NSAPI_STATUS_LOCAL_UP (whether this is indicated depends on network interface type)
4. Check that interface indicates status NSAPI_STATUS_GLOBAL_UP
5. Disconnect interface
6. Check that interface indicates status NSAPI_STATUS_DISCONNECTED
7. Repeat connect and disconnect steps 1 to 6 four times
**Expected result:**
Callback statuses are correct. `Connect()` and `disconnect()` calls return NSAPI_ERROR_OK. Note: network interface may indicate same status several times a row depending on network interface type. This will not fail the test.
### NETWORKINTERFACE_STATUS_GET
**Description:**
Test `NetworkInterface::get_connection_status()`.
**Preconditions:**
1. Network interface is initialized
2. Network interface is on blocking mode
**Test steps:**
1. Check that<61>`get_connection_status()` returns status NSAPI_STATUS_DISCONNECTED
2. Connect interface
3. Poll the<68>`get_connection_status()` until it returns status NSAPI_STATUS_GLOBAL_UP
4. Disconnect interface
5. Check that<61>`get_connection_status()` returns status NSAPI_STATUS_DISCONNECTED
6. Repeat connect and disconnect steps 2 to 5 four times
**Expected result:**
`Connect()` and `disconnect()` calls return NSAPI_ERROR_OK. Right status is returned by `get_connection_status()`.