1*** Variables ***
2${UART}                             sysbus.usart3
3
4${PROJECT_URL}                      https://dl.antmicro.com/projects/renode
5${ECHO_SERVER}                      ${PROJECT_URL}/nucleo_f429zi-zephyr-echo_server.elf-s_3529768-a44aca7749d2850302350f4c2fb4647aecaa8c72
6${ECHO_CLIENT}                      ${PROJECT_URL}/nucleo_f429zi-zephyr-echo_client.elf-s_3478872-614b8752844ac17e9335fcd12ad9fcec742571d5
7
8${PLATFORM}                         @platforms/boards/stm32f4_discovery-kit.repl
9
10*** Keywords ***
11Create Setup
12    Execute Command                 emulation CreateSwitch "switch"
13
14    Create Machine                  ${ECHO_SERVER}
15    Execute Command                 connector Connect sysbus.ethernet switch
16    Create Machine                  ${ECHO_CLIENT}
17    Execute Command                 connector Connect sysbus.ethernet switch
18
19Create Machine
20    [Arguments]                     ${elf}
21
22    Execute Command                 mach create
23    Execute Command                 machine LoadPlatformDescription ${PLATFORM}
24
25    Execute Command                 sysbus LoadELF @${elf}
26
27*** Test Cases ***
28Should Talk
29    Create Setup
30    ${server}=  Create Terminal Tester          ${UART}  machine=machine-0
31    ${client}=  Create Terminal Tester          ${UART}  machine=machine-1
32
33    Start Emulation
34
35    Wait For Line On Uart           Initializing network                                                 testerId=${server}
36    Wait For Line On Uart           Run echo server                                                      testerId=${server}
37    Wait For Line On Uart           Network connected                                                    testerId=${server}
38    Wait For Line On Uart           Waiting for TCP connection                                           testerId=${server}
39
40    Wait For Line On Uart           Initializing network                                                 testerId=${client}
41    Wait For Line On Uart           Run echo client                                                      testerId=${client}
42    Wait For Line On Uart           Network connected                                                    testerId=${client}
43
44    Wait For Line On Uart           Accepted connection                                                  testerId=${server}
45
46    Wait For Line On Uart           Sent                                                                 testerId=${client}
47    Wait For Line On Uart           Received and replied                                                 testerId=${server}
48    Wait For Line On Uart           Received and compared \\d+ bytes, all ok                             testerId=${client}   treatAsRegex=true
49
50    Wait For Line On Uart           Sent                                                                 testerId=${client}
51    Wait For Line On Uart           Received and replied                                                 testerId=${server}
52    Wait For Line On Uart           Received and compared \\d+ bytes, all ok                             testerId=${client}   treatAsRegex=true
53
54    Wait For Line On Uart           Sent                                                                 testerId=${client}
55    Wait For Line On Uart           Received and replied                                                 testerId=${server}
56    Wait For Line On Uart           Received and compared \\d+ bytes, all ok                             testerId=${client}   treatAsRegex=true
57
58    Wait For Line On Uart           Sent                                                                 testerId=${client}
59    Wait For Line On Uart           Received and replied                                                 testerId=${server}
60    Wait For Line On Uart           Received and compared \\d+ bytes, all ok                             testerId=${client}   treatAsRegex=true
61
62