--- /dev/null
+*** Settings ***
+Library Collections
+Library SSHLibrary
+Library UtilLibrary.py
+Resource Utils.robot
+
+*** Variables ***
+${REST_VIEW_CHANNEL} /restconf/operations/usc-channel:view-channel
+${REST_ADD_CHANNEL} /restconf/operations/usc-channel:add-channel
+${REST_REMOVE_CHANNEL} /restconf/operations/usc-channel:remove-channel
+${REST_SEND_MESSAGE} /restconf/operations/usc-channel:send-message
+${NAV_USC_TOOLS} cd ~/usc-tools
+${CLONE_USC_TOOLS} [ -f ~/usc-tools/UscAgent.jar ] && echo "The usc-tools does exist. (17/17), done." || git clone https://github.com/victorxu99/usc-tools.git ~/usc-tools
+${USC_AGENT_IP} 192.168.56.51
+${ECHO_SERVER_PORT} 2007
+@{LIST_ECHO_SERVER_PORT} 2007 2008 2009
+${TEST_MESSAGE} This is a test message.
+${NUM_OF_MESSAGES} 100
+${AgentTcp} java -jar UscAgent.jar -t true
+${AgentUdp} java -jar UscAgent.jar -t false
+${AgentTcpCallhome} java -jar UscAgent.jar -t true -c true -h 192.168.56.20
+${AgentUdpCallhome} java -jar UscAgent.jar -t false -c true -h 192.168.56.20
+${EchoServerTcp} java -jar EchoServer.jar -t true -p 2007
+${EchoServerUdp} java -jar EchoServer.jar -t false -p 2007
+
+*** Keywords ***
+Download Tools
+ [Documentation] Download UscAgent and EchoServer before any system
+ ... is run.
+ Log Download tools begin ...
+ ${tools_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${tools_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${CLONE_USC_TOOLS}
+ Read Until (17/17), done.
+ Log Download tools ended.
+
+Close Download Connection
+ [Documentation] Close Download Connection
+ Log Close Download Connection
+ Switch Connection ${tools_conn_id}
+ Write exit
+ Close Connection
+
+Start TCP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for TCP
+ ${agent_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${agent_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${AgentTcp}
+ Read
+ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${echo_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${EchoServerTcp}
+ Read Until initialized
+
+Start UDP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for UDP
+ ${agent_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${agent_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${AgentUdp}
+ Read
+ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${echo_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${EchoServerUdp}
+ Read Until initialized
+
+Start CALLHOME_TCP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for CALLHOME_TCP
+ ${agent_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${agent_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${AgentTcpCallhome}
+ Read
+ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${echo_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${EchoServerTcp}
+ Read Until initialized
+
+Start CALLHOME_UDP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for CALLHOME_UDP
+ ${agent_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${agent_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${AgentUdpCallhome}
+ Read
+ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${echo_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${EchoServerUdp}
+ Read Until initialized
+
+Start Fallback_TCP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for Fallback_TCP
+ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${echo_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${EchoServerTcp}
+ Read Until initialized
+
+Start Fallback_UDP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for Fallback_TCP
+ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${echo_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${EchoServerUdp}
+ Read Until initialized
+
+Start Multiple_Sessions_TCP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for Multiple_Sessions_TCP
+ ${agent_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${agent_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${AgentTcp}
+ Read
+ ${L1} Create List
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ Log ${port_index}
+ \ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ \ Append To List ${L1} ${echo_conn_id}
+ \ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ \ Write ${NAV_USC_TOOLS}
+ \ Write java -jar EchoServer.jar -t true -p ${port_index}
+ \ Read Until initialized
+ Set Suite Variable ${L1}
+
+Start Multiple_Sessions_UDP
+ [Documentation] Basic setup/cleanup work that can be done safely before any system
+ ... is run.
+ Log Start USC test VM for Multiple_Sessions_UDP
+ ${agent_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ Set Suite Variable ${agent_conn_id}
+ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ Write ${NAV_USC_TOOLS}
+ Write ${AgentUdp}
+ Read
+ ${L1} Create List
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ Log ${port_index}
+ \ ${echo_conn_id}= Open Connection ${TOOLS_SYSTEM_IP} timeout=30s
+ \ Append To List ${L1} ${echo_conn_id}
+ \ Flexible Mininet Login user=${TOOLS_SYSTEM_USER} password=${TOOLS_SYSTEM_PASSWORD}
+ \ Write ${NAV_USC_TOOLS}
+ \ Write java -jar EchoServer.jar -t false -p ${port_index}
+ \ Read Until initialized
+ Set Suite Variable ${L1}
+
+Stop Agent_Echo
+ [Documentation] Cleanup/Shutdown work that should be done at the completion of all
+ ... tests
+ Log Stop USC test VM for Agent_Echo
+ Switch Connection ${agent_conn_id}
+ Read
+ Write_Bare_Ctrl_C
+ Write exit
+ Close Connection
+ Switch Connection ${echo_conn_id}
+ Read
+ Write_Bare_Ctrl_C
+ Write exit
+ Close Connection
+
+Stop Echo
+ [Documentation] Cleanup/Shutdown work that should be done at the completion of all
+ ... tests
+ Log Stop USC test VM for Echo
+ Switch Connection ${echo_conn_id}
+ Read
+ Write_Bare_Ctrl_C
+ Write exit
+ Close Connection
+
+Stop One_Agent_Multiple_Echo
+ [Documentation] Cleanup/Shutdown work that should be done at the completion of all
+ ... tests
+ Log Stop USC test VM for One_Agent_Multiple_Echo
+ Switch Connection ${agent_conn_id}
+ Read
+ Write_Bare_Ctrl_C
+ Write exit
+ Close Connection
+ : FOR ${echo_conn_id} IN @{L1}
+ \ Switch Connection ${echo_conn_id}
+ \ Read
+ \ Write_Bare_Ctrl_C
+ \ Write exit
+ \ Close Connection
--- /dev/null
+*** Settings ***
+Suite Setup Download Tools
+Suite Teardown Close Download Connection
+Resource ../../libraries/UscUtils.robot
--- /dev/null
+*** Settings ***
+Documentation Test suite for quicking testing if the environme setup is correct
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Default Tags TCP_BASIC
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Library json
+Variables ../../../variables/Variables.py
+Resource ../../../libraries/UscUtils.robot
+
+*** Test Cases ***
+View Channel
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
--- /dev/null
+*** Settings ***
+Documentation Test suite for an USC TLS channel
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Library Collections
+Library OperatingSystem
+Library SSHLibrary
+Library RequestsLibrary
+Library json
+Library ../../../../libraries/Common.py
+Variables ../../../../variables/Variables.py
+Resource ../../../../libraries/UscUtils.robot
+
+*** Test Cases ***
+Add Channel
+ [Documentation] Add an USC TLS channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} tcp=true port=${ECHO_SERVER_PORT} remote=false
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_ADD_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to connect
+
+Check added Channel
+ [Documentation] Check if the channel is correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} topology
+ Should Contain ${resp.content} "sessions":1
+ Should Contain ${resp.content} "channel-type":"TLS"
+
+Send Messages
+ [Documentation] Send test messages multiple times to multiple sessions
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=true content=${TEST_MESSAGE}
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ : FOR ${index} IN RANGE 0 ${NUM_OF_MESSAGES}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_SEND_MESSAGE} data=${data}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to send request
+
+View Bytes In and Bytes Out
+ [Documentation] Check if the number of Bytes In and Bytes Out are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} topology
+ ${len} Get Length ${TEST_MESSAGE}
+ ${totalLen} Evaluate ${len} * ${NUM_OF_MESSAGES}
+ Should Contain ${resp.content} "bytes-out":${totalLen}
+ Should Contain ${resp.content} "bytes-in":${totalLen}
+
+Remove Channel
+ [Documentation] Remove the channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=true
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_REMOVE_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to remove
--- /dev/null
+*** Settings ***
+Documentation Test suite for an USC TLS channel
+Suite Setup Start TCP
+Suite Teardown Stop Agent_Echo
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Keywords ***
--- /dev/null
+*** Settings ***
+Documentation Test suite for multiple sessions in an USC TLS channel
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Library Collections
+Library OperatingSystem
+Library SSHLibrary
+Library RequestsLibrary
+Library json
+Library ../../../../libraries/Common.py
+Variables ../../../../variables/Variables.py
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Test Cases ***
+Add Channel
+ [Documentation] Add multiple USC TLS channels
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${port_index} tcp=true remote=false
+ \ ${channel} Create Dictionary channel=${content}
+ \ ${input} Create Dictionary input=${channel}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_ADD_CHANNEL} data=${data}
+ \ Log ${resp.content}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to connect
+
+Check added Channel
+ [Documentation] Check if the channels are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len} Get Length ${LIST_ECHO_SERVER_PORT}
+ Should Contain ${resp.content} "sessions":${len}
+ Should Contain ${resp.content} "channel-type":"TLS"
+
+Send Messages
+ [Documentation] Send test messages multiple times
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${port_index} tcp=true content=${TEST_MESSAGE}
+ \ ${channel} Create Dictionary channel=${content}
+ \ ${input} Create Dictionary input=${channel}
+ \ Send Now ${input}
+
+View Bytes In and Bytes Out
+ [Documentation] Check if the number of Bytes In and Bytes Out are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len1} Get Length ${LIST_ECHO_SERVER_PORT}
+ ${len2} Get Length ${TEST_MESSAGE}
+ ${totalLen} Evaluate ${len1} * ${len2} * ${NUM_OF_MESSAGES}
+ Should Contain ${resp.content} "bytes-out":${totalLen}
+ Should Contain ${resp.content} "bytes-in":${totalLen}
+
+Remove Channel
+ [Documentation] Remove the channels
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${port_index} tcp=true
+ \ ${channel} Create Dictionary channel=${content}
+ \ ${input} Create Dictionary input=${channel}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_REMOVE_CHANNEL} data=${data}
+ \ Log ${resp.content}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to remove
+
+*** Keywords ***
+Send Now
+ [Arguments] ${body}
+ : FOR ${index} IN RANGE 0 ${NUM_OF_MESSAGES}
+ \ ${data} json.dumps ${body}
+ \ ${resp} Post Request session ${REST_SEND_MESSAGE} data=${data}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to send request
--- /dev/null
+*** Settings ***
+Documentation Test suite for multiple sessions in an USC TLS channel
+Suite Setup Start Multiple_Sessions_TCP
+Suite Teardown Stop One_Agent_Multiple_Echo
+Force Tags Multiple Sessions TCP
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Keywords ***
--- /dev/null
+*** Settings ***
+Documentation Test suite for callhome TLS channel
+Suite Setup Start CALLHOME_TCP
+Suite Teardown Stop Agent_Echo
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Keywords ***
--- /dev/null
+*** Settings ***
+Documentation Test suite for callhome TLS channel
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Library Collections
+Library OperatingSystem
+Library SSHLibrary
+Library RequestsLibrary
+Library json
+Library ../../../../libraries/Common.py
+Variables ../../../../variables/Variables.py
+Resource ../../../../libraries/UscUtils.robot
+
+*** Test Cases ***
+Add Channel
+ [Documentation] Add an USC TLS callhome channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} tcp=true port=${ECHO_SERVER_PORT} remote=false
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_ADD_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to connect
+
+Check added Channel
+ [Documentation] Check if the channel is correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ Should Contain ${resp.content} "sessions":1
+ Should Contain ${resp.content} "channel-type":"TLS"
+ Should Contain ${resp.content} "call-home":"CallHome"
+
+Send Messages
+ [Documentation] Send test messages multiple times
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=true content=${TEST_MESSAGE}
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ : FOR ${index} IN RANGE 0 ${NUM_OF_MESSAGES}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_SEND_MESSAGE} data=${data}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to send request
+
+View Bytes In and Bytes Out
+ [Documentation] Check if the number of Bytes In and Bytes Out are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len} Get Length ${TEST_MESSAGE}
+ ${totalLen} Evaluate ${len} * ${NUM_OF_MESSAGES}
+ Should Contain ${resp.content} "bytes-out":${totalLen}
+ Should Contain ${resp.content} "bytes-in":${totalLen}
+
+Remove Channel
+ [Documentation] Remove the channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=true
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_REMOVE_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to remove
--- /dev/null
+*** Settings ***
+Force Tags TCP
--- /dev/null
+*** Settings ***
+Documentation Test suite for an USC DTLS channel
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Test Timeout 1min
+Library Collections
+Library OperatingSystem
+Library RequestsLibrary
+Library json
+Library ../../../../libraries/Common.py
+Variables ../../../../variables/Variables.py
+Resource ../../../../libraries/UscUtils.robot
+
+*** Test Cases ***
+Add Channel
+ [Documentation] Add an USC DTLS channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} tcp=false port=${ECHO_SERVER_PORT} remote=false
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_ADD_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to connect
+
+Check added Channel
+ [Documentation] Check if the channel is correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ Should Contain ${resp.content} "sessions":1
+ Should Contain ${resp.content} "channel-type":"DTLS"
+
+Send Messages
+ [Documentation] Send test messages multiple times to multiple sessions
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=false content=${TEST_MESSAGE}
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ : FOR ${index} IN RANGE 0 ${NUM_OF_MESSAGES}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_SEND_MESSAGE} data=${data}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to send request
+
+View Bytes In and Bytes Out
+ [Documentation] Check if the number of Bytes In and Bytes Out are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len} Get Length ${TEST_MESSAGE}
+ ${totalLen} Evaluate ${len} * ${NUM_OF_MESSAGES}
+ Should Contain ${resp.content} "bytes-out":${totalLen}
+ Should Contain ${resp.content} "bytes-in":${totalLen}
+
+Remove Channel
+ [Documentation] Remove the channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=false
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_REMOVE_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to remove
--- /dev/null
+*** Settings ***
+Documentation Test suite for an USC DTLS channel
+Suite Setup Start UDP
+Suite Teardown Stop Agent_Echo
+Force Tags 110_UDP
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Keywords ***
--- /dev/null
+*** Settings ***
+Documentation Test suite for multiple sessions in an USC TLS channel
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Test Timeout 1min
+Library Collections
+Library OperatingSystem
+Library SSHLibrary
+Library RequestsLibrary
+Library json
+Library ../../../../libraries/Common.py
+Variables ../../../../variables/Variables.py
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Test Cases ***
+Add Channel
+ [Documentation] Add multiple USC DTLS channels
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${port_index} tcp=false remote=false
+ \ ${channel} Create Dictionary channel=${content}
+ \ ${input} Create Dictionary input=${channel}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_ADD_CHANNEL} data=${data}
+ \ Log ${resp.content}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to connect
+
+Check added Channel
+ [Documentation] Check if the channels are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len} Get Length ${LIST_ECHO_SERVER_PORT}
+ Should Contain ${resp.content} "sessions":${len}
+ Should Contain ${resp.content} "channel-type":"DTLS"
+
+Send Messages
+ [Documentation] Send test messages multiple times
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${port_index} tcp=false content=${TEST_MESSAGE}
+ \ ${channel} Create Dictionary channel=${content}
+ \ ${input} Create Dictionary input=${channel}
+ \ Send Now ${input}
+
+View Bytes In and Bytes Out
+ [Documentation] Check if the number of Bytes In and Bytes Out are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len} Get Length ${TEST_MESSAGE}
+ ${len1} Get Length ${LIST_ECHO_SERVER_PORT}
+ ${len2} Get Length ${TEST_MESSAGE}
+ ${totalLen} Evaluate ${len1} * ${len2} * ${NUM_OF_MESSAGES}
+ Should Contain ${resp.content} "bytes-out":${totalLen}
+ Should Contain ${resp.content} "bytes-in":${totalLen}
+
+Remove Channel
+ [Documentation] Remove the channels
+ : FOR ${port_index} IN @{LIST_ECHO_SERVER_PORT}
+ \ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${port_index} tcp=false
+ \ ${channel} Create Dictionary channel=${content}
+ \ ${input} Create Dictionary input=${channel}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_REMOVE_CHANNEL} data=${data}
+ \ Log ${resp.content}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to remove
+
+*** Keywords ***
+Send Now
+ [Arguments] ${body}
+ : FOR ${index} IN RANGE 0 ${NUM_OF_MESSAGES}
+ \ ${data} json.dumps ${body}
+ \ ${resp} Post Request session ${REST_SEND_MESSAGE} data=${data}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to send request
--- /dev/null
+*** Settings ***
+Documentation Test suite for multiple sessions in an USC DTLS channel
+Suite Setup Start Multiple_Sessions_UDP
+Suite Teardown Stop One_Agent_Multiple_Echo
+Force Tags Multiple_Sessions_UDP
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Keywords ***
--- /dev/null
+*** Settings ***
+Documentation Test suite for callhome DTLS channel
+Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
+Suite Teardown Delete All Sessions
+Test Timeout 1 minute
+Library Collections
+Library OperatingSystem
+Library SSHLibrary
+Library RequestsLibrary
+Library json
+Library ../../../../libraries/Common.py
+Variables ../../../../variables/Variables.py
+Resource ../../../../libraries/UscUtils.robot
+
+*** Test Cases ***
+Add Channel
+ [Documentation] Add an USC TLS callhome channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} tcp=false port=${ECHO_SERVER_PORT} remote=false
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_ADD_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to connect
+
+Check added Channel
+ [Documentation] Check if the channel is correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ Should Contain ${resp.content} "sessions":1
+ Should Contain ${resp.content} "channel-type":"DTLS"
+ Should Contain ${resp.content} "call-home":"CallHome"
+
+Send Messages
+ [Documentation] Send test messages multiple times
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=false content=${TEST_MESSAGE}
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ : FOR ${index} IN RANGE 0 ${NUM_OF_MESSAGES}
+ \ ${data} json.dumps ${input}
+ \ ${resp} Post Request session ${REST_SEND_MESSAGE} data=${data}
+ \ Should Be Equal As Strings ${resp.status_code} 200
+ \ Should Contain ${resp.content} Succeed to send request
+
+View Bytes In and Bytes Out
+ [Documentation] Check if the number of Bytes In and Bytes Out are correct
+ ${topo} Create Dictionary topology-id=usc
+ ${input} Create Dictionary input=${topo}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_VIEW_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} "topology"
+ ${len} Get Length ${TEST_MESSAGE}
+ ${totalLen} Evaluate ${len} * ${NUM_OF_MESSAGES}
+ Should Contain ${resp.content} "bytes-out":${totalLen}
+ Should Contain ${resp.content} "bytes-in":${totalLen}
+
+Remove Channel
+ [Documentation] Remove the channel
+ ${content} Create Dictionary hostname=${TOOLS_SYSTEM_IP} port=${ECHO_SERVER_PORT} tcp=false
+ ${channel} Create Dictionary channel=${content}
+ ${input} Create Dictionary input=${channel}
+ ${data} json.dumps ${input}
+ ${resp} Post Request session ${REST_REMOVE_CHANNEL} data=${data}
+ Log ${resp.content}
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain ${resp.content} Succeed to remove
--- /dev/null
+*** Settings ***
+Documentation Test suite for callhome DTLS channel
+Suite Setup Start CALLHOME_UDP
+Suite Teardown Stop Agent_Echo
+Force Tags UDP_CALLHOME
+Resource ../../../../libraries/UscUtils.robot
+
+*** Variables ***
+
+*** Keywords ***
--- /dev/null
+*** Settings ***
+Force Tags UDP