1*** Variables ***
2${SCRIPT}                     @scripts/single-node/beaglev_starlight.resc
3${MACHINE0}                   machine0
4${MACHINE1}                   machine1
5${MAC_ADDR0}                  66:34:B0:6C:DE:A0
6${MAC_ADDR1}                  66:34:B0:6C:DE:A1
7${IP_ADDR0}                   192.168.0.5
8${IP_ADDR1}                   192.168.0.6
9${UART}                       sysbus.uart3
10
11
12*** Keywords ***
13Create Machine
14    [Arguments]              ${machine}
15    Execute Command          $name="${machine}"
16    Execute Command          include @${SCRIPT}
17    # We enable serial execution to ensure a deterministic result as this test uses 2 machines, each with 2 CPUs
18    Execute Command          emulation SetGlobalSerialExecution True
19    ${tester} =              Create Terminal Tester   ${UART}   40   ${machine}   defaultPauseEmulation=True
20    RETURN                   ${tester}
21
22Connect Machines To Switch
23    Execute Command          emulation CreateSwitch "switch"
24    Execute Command          connector Connect sysbus.ethernet switch   machine=${MACHINE0}
25    Execute Command          connector Connect sysbus.ethernet switch   machine=${MACHINE1}
26
27Verify U-Boot
28    [Arguments]              ${tester}
29    Wait For Line On Uart    OpenSBI v0.9                  testerId=${tester}
30    Wait For Line On Uart    Platform Name\\s+: StarFive   testerId=${tester}   treatAsRegex=true
31    Wait For Line On Uart    U-Boot 2021.01                testerId=${tester}
32    Wait For Prompt On Uart  dwmac.10020000                testerId=${tester}
33
34Login
35    [Arguments]              ${tester}
36    Wait For Prompt On Uart  buildroot login:     testerId=${tester}
37    Write Line To Uart       root                 testerId=${tester}
38
39    Wait For Prompt On Uart  Password:            testerId=${tester}
40    Write Line To Uart       starfive             testerId=${tester}     waitForEcho=false
41
42Test Ping
43    [Arguments]              ${packet_size}=56
44    ${tester} =              Create Terminal Tester   ${UART}   machine=${MACHINE0}   defaultPauseEmulation=True
45    Write Line To Uart       ping -As ${packet_size} -c 10 ${IP_ADDR0}   testerId=${tester}   waitForEcho=false
46    Wait For Line On Uart    10 packets transmitted, 10 packets received, 0% packet loss  testerId=${tester}
47
48
49*** Test Cases ***
50Should Boot U-Boot
51    ${tester0} =         Create Machine           ${MACHINE0}
52    ${tester1} =         Create Machine           ${MACHINE1}
53
54    Verify U-Boot  ${tester0}
55    Verify U-Boot  ${tester1}
56
57    Provides                 booted-uboot
58
59Should Provide Two Linux Machines With Ethernet Connection
60    Requires                 booted-uboot
61
62    Connect Machines To Switch
63
64    ${tester0} =             Create Terminal Tester   ${UART}   machine=${MACHINE0}   defaultPauseEmulation=True
65    ${tester1} =             Create Terminal Tester   ${UART}   machine=${MACHINE1}   defaultPauseEmulation=True
66
67    Login  ${tester0}
68    Login  ${tester1}
69
70    Wait For Prompt On Uart  \#                                             testerId=${tester0}
71    Write Line To Uart       ifconfig eth0 down                             testerId=${tester0}
72    Wait For Prompt On Uart  \#                                             testerId=${tester1}
73    Write Line To Uart       ifconfig eth0 down                             testerId=${tester1}
74
75    Wait For Prompt On Uart  \#                                             testerId=${tester0}
76    Write Line To Uart       ifconfig eth0 hw ether ${MAC_ADDR0}            testerId=${tester0}
77    Wait For Prompt On Uart  \#                                             testerId=${tester1}
78    Write Line To Uart       ifconfig eth0 hw ether ${MAC_ADDR1}            testerId=${tester1}
79
80    # MTU size must be decreased due to limiations of the driver
81    Wait For Prompt On Uart  \#                                             testerId=${tester0}
82    Write Line To Uart       ifconfig eth0 mtu 440 up ${IP_ADDR0}           testerId=${tester0}  waitForEcho=false
83    Wait For Prompt On Uart  \#                                             testerId=${tester1}
84    Write Line To Uart       ifconfig eth0 mtu 440 up ${IP_ADDR1}           testerId=${tester1}  waitForEcho=false
85
86    Provides                 booted-linux
87
88Should Ping
89    Requires                 booted-linux
90    Test Ping
91
92Should Ping Large Payload
93    Requires                 booted-linux
94    Test Ping                packet_size=3200
95