Updated emac greentea tests

- Improved markdown
- Set tests to fail if CTP echo server is not present
pull/6847/head
Mika Leppänen 2018-05-09 10:19:52 +03:00 committed by Kevin Bracey
parent d9a66f1c54
commit 026af3a72e
6 changed files with 124 additions and 9 deletions

View File

@ -6,6 +6,76 @@ This document describes how to run EMAC tests. The EMAC test cases are made usin
To configure a device to be a CTP echo server, you need to enable the `echo-server` setting in the `json` file of the test environment application. When a device is configured to be a CTP echo server, it starts to forward CTP messages automatically when it is switched on and continues to do so until it is switched off. To configure a device to be a CTP echo server, you need to enable the `echo-server` setting in the `json` file of the test environment application. When a device is configured to be a CTP echo server, it starts to forward CTP messages automatically when it is switched on and continues to do so until it is switched off.
## Other configuration options
Default configuration files included with tests are configured for ethernet. For Wifi, set `test-ethernet` to 0 and `test-wifi` to 1. Also Wifi SSID and security options need to be configured to the configuration file.
## Example commands
### CTP echo server
You can use following command to build CTP echo server:
`mbed test --compile -m TARGET -t GCC_ARM -v -n tests-network-emac --app-config TESTS/network/emac/template_mbed_app_echo_server.txt`
Replace TARGET with the target device. After building, flash the binary to the CTP echo server device.
You can verify that the CTP echo server has been started properly by making terminal connection to the device, resetting it and verifying that `echo server started successfully` is printed on the terminal. Host tests can be run when the CTP echo server is running on the Ethernet segment.
For Wifi tests the CTP echo server can be also running of ethernet side as long as network configuration is such that Ethernet frames are routed between Wifi and Ethernet.
CTP echo server is sending 100 bytes long broadcast CTP Ethernet frame every 60 seconds to inform the network of its presence.
### Running tests
You can use following command to run tests:
`mbed test --compile --run -m TARGET -t GCC_ARM -v -n tests-network-emac --app-config TESTS/network/emac/template_mbed_app.txt`
Replace TARGET with the target device.
## Traces
Test cases have different trace levels based on how much tracing can be done without affecting the performance of the test case. Tracing is configured using `SET\_TRACE\_LEVEL' macro.
For example `EMAC broadcast` test enables send, input CTP frame, success and failure traces:
`SET_TRACE_LEVEL(TRACE_SEND | TRACE_ETH_FRAMES | TRACE_SUCCESS | TRACE_FAILURE);`
Here is an example trace about a message that has been send to broadcast address `ff:ff:ff:ff:ff:ff` and is answered by echo server:
```
message sent ff:ff:ff:ff:ff:ff
response: receipt number 24 LENGTH OK DATA OK BROADCAST
```
Here is an example trace about a message that has been send to broadcast address `ff:ff:ff:ff:ff:ff` and is not answered by echo server:
```
message sent ff:ff:ff:ff:ff:ff
NO RESPONSE: receipt number 25
```
Here is an example about input message trace, message hex dump contains the first 32 bytes of the received Ethernet frame.
```
INP> LEN 100
INP> 000000 ff ff ff ff ff ff ba 42 ed 79 11 8a 90 00
INP> 00000e 00 00 02 00 ba 42 ed 79 11 8a 01 00 01 00
```
If you like to verify whether the echo server is receiving CTP Ethernet frames you can enable `echo-server-trace` option in the echo server configuration file. This can be used for debugging purposes. Do not run performance test like `EMAC unicast burst` with tracing enabled, since tracing affects the echo server performance.
## Test cases ## Test cases
### EMAC initialize ### EMAC initialize

View File

@ -45,7 +45,9 @@ void test_emac_broadcast_cb(int opt)
#if MBED_CONF_APP_ECHO_SERVER #if MBED_CONF_APP_ECHO_SERVER
static bool echo_server_started = false; static bool echo_server_started = false;
if (!echo_server_started) { if (!echo_server_started) {
#if MBED_CONF_APP_ECHO_SERVER_TRACE == 0
SET_TRACE_LEVEL(TRACE_NONE); SET_TRACE_LEVEL(TRACE_NONE);
#endif
printf("echo server started successfully\r\n\r\n"); printf("echo server started successfully\r\n\r\n");
echo_server_started = true; echo_server_started = true;
} else { } else {
@ -65,7 +67,6 @@ void test_emac_broadcast_cb(int opt)
if (++no_response_cnt > 3) { if (++no_response_cnt > 3) {
if (++retries > 6) { if (++retries > 6) {
printf("too many retries\r\n\r\n"); printf("too many retries\r\n\r\n");
RESET_ERROR_FLAGS(NO_RESPONSE);
END_TEST_LOOP; END_TEST_LOOP;
} else { } else {
printf("retry count %i\r\n\r\n", retries); printf("retry count %i\r\n\r\n", retries);

View File

@ -510,13 +510,11 @@ static void worker_loop_event_cb(int event)
{ {
if (event == LINK_UP) { if (event == LINK_UP) {
link_up = true; link_up = true;
printf("cable connected\r\n\r\n");
link_status_semaphore.release(); link_status_semaphore.release();
} }
if (event == LINK_DOWN) { if (event == LINK_DOWN) {
link_up = false; link_up = false;
printf("cable disconnected\r\n\r\n");
} }
} }

View File

@ -15,12 +15,13 @@
* limitations under the License. * limitations under the License.
*/ */
#if !defined(MBED_CONF_APP_TEST_WIFI) || \ #if !defined(MBED_CONF_APP_TEST_WIFI) || \
!defined(MBED_CONF_APP_TEST_ETHERNET) || \ !defined(MBED_CONF_APP_TEST_ETHERNET) || \
!defined(MBED_CONF_APP_ECHO_SERVER) || \ !defined(MBED_CONF_APP_ECHO_SERVER) || \
!defined(MBED_CONF_APP_WIFI_SCAN) || \ !defined(MBED_CONF_APP_ECHO_SERVER_TRACE) || \
!defined(MBED_CONF_APP_WIFI_SSID ) || \ !defined(MBED_CONF_APP_WIFI_SCAN) || \
!defined(MBED_CONF_APP_WIFI_SECURITY) || \ !defined(MBED_CONF_APP_WIFI_SSID ) || \
!defined(MBED_CONF_APP_WIFI_SECURITY) || \
!defined(MBED_CONF_APP_WIFI_PASSWORD) !defined(MBED_CONF_APP_WIFI_PASSWORD)
#error [NOT_SUPPORTED] Requires parameters from mbed_app.json #error [NOT_SUPPORTED] Requires parameters from mbed_app.json
#endif #endif

View File

@ -12,6 +12,10 @@
"help": "Build test to be echo server", "help": "Build test to be echo server",
"value": 0 "value": 0
}, },
"echo-server-trace": {
"help": "Trace incoming messages on echo server",
"value": 0
},
"wifi-scan": { "wifi-scan": {
"help": "Scan and list access points", "help": "Scan and list access points",
"value": 0 "value": 0

View File

@ -0,0 +1,41 @@
{
"config": {
"test-ethernet": {
"help": "Enable ethernet testing",
"value": 1
},
"test-wifi": {
"help": "Enable wifi testing",
"value": 0
},
"echo-server": {
"help": "Build test to be echo server",
"value": 1
},
"echo-server-trace": {
"help": "Trace incoming messages on echo server",
"value": 0
},
"wifi-scan": {
"help": "Scan and list access points",
"value": 0
},
"wifi-ssid": {
"help": "WiFi SSID for network",
"value": "\"SSID\""
},
"wifi-security": {
"help": "WiFi Security",
"value": "NSAPI_SECURITY_WPA_WPA2"
},
"wifi-password": {
"help": "WiFi Password",
"value": "\"PASSWORD\""
}
},
"target_overrides": {
"*": {
"nsapi.default-stack": "TEST"
}
}
}