Merge pull request #148 from opennetworkinglab/devl/duplicate

Remove duplicate file
diff --git a/TestON/tests/RobotTests/ScalePOC.robot b/TestON/tests/RobotTests/ScalePOC.robot
deleted file mode 100644
index 9ce62a7..0000000
--- a/TestON/tests/RobotTests/ScalePOC.robot
+++ /dev/null
@@ -1,335 +0,0 @@
-*** Settings ***
-Documentation     ONOS Sanity Test Suite
-Suite Setup       ONOS Suite Setup    ${CONTROLLER_IP}    ${CONTROLLER_USER}
-Suite Teardown    ONOS Suite Teardown
-Library           SSHLibrary
-Library           Collections
-Library           OperatingSystem
-Library           String
-Library           RequestsLibrary
-Library           HttpLibrary.HTTP
-
-*** Variables ***
-${CONTROLLER_IP}    %{OC1}
-${MININET_IP}    %{OCN}
-${CONTROLLER_USER}    %{ONOS_USER}
-${MININET_USER}    %{ONOS_USER}
-${USER_HOME}    /home/fedora
-${ONOS_HOME}    /opt/onos
-${RESTCONFPORT}    8181
-${LINUX_PROMPT}    $
-${SWITCHES_RESULT_FILE}    ${USER_HOME}/workspace/tools/switches.csv
-${JENKINS_WORKSPACE}    ${USER_HOME}/workspace/ONOS-Stable/
-${prompt_timeout}    30s
-${start}    10
-${end}    100
-${increments}    10
-${cluster}    1
-
-*** Test Cases ***
-Find Max Switches By Scaling
-    [Documentation]    Find the max number of switches from ${start} until reaching ${end} in steps of ${increments}. The following checks are made through REST APIs:
-    ...    -\ Verify device count is correct
-    ...    -\ Verify device status is available
-    ...    -\ Verify device roles are MASTER (default role in case of standalone controller)
-    ...    -\ Verify topology recognizes corret number of devices (Through api "/topology")
-    ...    -\ Observe each device individually
-    ...    -\ Observe links, hosts, and flows through the controller
-    ...    -\ Observe device info at lower level on mininet (Written for PoC). Shows flows, links, and ports. Checks can be easily implemented at that level as well
-    ...    -\ STOP Mininet Topo
-    ...    -\ Verify device count is zero
-    ...    -\ Verify topology sees no devices (Through api "/topology")
-    [Tags]    done
-    Append To File    ${SWITCHES_RESULT_FILE}    Max Switches Linear Topo\n
-    ${max}=    Find Max Switches    ${start}    ${end}    ${increments}
-    Log    ${max}
-    Append To File    ${SWITCHES_RESULT_FILE}    ${max}\n
-
-*** Keywords   ***
-ONOS Suite Setup
-    [Arguments]    ${controller}    ${user}
-    [Documentation]    Transfers the ONOS dist over to the test vm and start the controller. We will leverage the bash script, "onos-install" to do this.
-    Create Controller IP List
-    ${rc}=    Run and Return RC    onos-package
-    Should Be Equal As Integers    ${rc}    0
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${rc}=    Run and Return RC    onos-install -f ${ip}
-    \    Should Be Equal As Integers    ${rc}    0
-    Create HTTP Sessions
-    Wait Until Keyword Succeeds    60s    2s    Verify All Controller are up
-    #If creating a cluster, create a keyword  and call it here
-
-ONOS Suite Teardown
-    [Documentation]    Stop ONOS on Controller VMs and grabs karaf logs on each controller (put them in /tmp)
-    ${rc}=    Run and Return RC    onos-kill
-    #Should Be Equal As Integers    ${rc}    0
-    ${rc}=    Run and Return RC    cp ${SWITCHES_RESULT_FILE} ${JENKINS_WORKSPACE}
-    Should Be Equal As Integers    ${rc}    0
-    ${rc}=    Run and Return RC    rm ${SWITCHES_RESULT_FILE}
-    Should Be Equal As Integers    ${rc}    0
-    Clean Mininet System
-    : FOR    ${ip}    IN    @{controller_list}
-    \    Get Karaf Logs    ${ip}
-
-Create Controller IP List
-    [Documentation]    Creates a list of controller ips for a cluster. When creating a cluster, be sure to set each variable to %{OC} env vars in the variables section 
-    @{controller_list}=    Create List    ${CONTROLLER_IP}
-    Set Suite Variable    @{controller_list}
-
-Create HTTP Sessions
-    [Documentation]    Creates an http session with all controllers in the cluster. Session names are set to respective ips. 
-    ${HEADERS}=    Create Dictionary    Content-Type    application/json
-    : FOR    ${ip}    IN    @{controller_list}
-    \    Create Session    ${ip}    http://${ip}:${RESTCONFPORT}    headers=${HEADERS}
-
-Find Max Switches
-    [Arguments]    ${start}    ${stop}    ${step}
-    [Documentation]    Will find out max switches starting from ${start} till reaching ${stop} and in steps defined by ${step}
-    ${max-switches}    Set Variable    ${0}
-    ${start}    Convert to Integer    ${start}
-    ${stop}    Convert to Integer    ${stop}
-    ${step}    Convert to Integer    ${step}
-    : FOR    ${switches}    IN RANGE    ${start}    ${stop+1}    ${step}
-    \    Start Mininet Linear    ${switches}
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Verify Controllers are Not Dead
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Ensure Switch Count    ${switches}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Ensure Switches are Available
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Ensure Switch Role    MASTER
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Ensure Topology    ${switches}    ${cluster}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Experiment Links, Hosts, and Flows
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Check Each Switch Individually
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Check Mininet at Lower Level
-    \    Stop Mininet
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Ensure No Switches are Available
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${status}    ${result}    Run Keyword And Ignore Error    Wait Until Keyword Succeeds    ${switches*2}    2s
-    \    ...    Ensure No Switches in Topology    ${cluster}
-    \    Exit For Loop If    '${status}' == 'FAIL'
-    \    ${max-switches}    Convert To String    ${switches}
-    [Return]    ${max-switches}
-
-Run Command On Remote System
-    [Arguments]    ${remote_system}    ${cmd}    ${user}=${CONTROLLER_USER}    ${prompt}=${LINUX_PROMPT}    ${prompt_timeout}=30s
-    [Documentation]    Reduces the common work of running a command on a remote system to a single higher level robot keyword,
-    ...    taking care to log in with a public key and the command given is written and the output returned. No test conditions
-    ...    are checked.
-    Log    Attempting to execute ${cmd} on ${remote_system}
-    ${conn_id}=    SSHLibrary.Open Connection    ${remote_system}    prompt=${prompt}    timeout=${prompt_timeout}
-    Login With Public Key    ${user}    ${USER_HOME}/.ssh/id_rsa    any
-    SSHLibrary.Write    ${cmd}
-    ${output}=    SSHLibrary.Read Until    ${LINUX_PROMPT}
-    SSHLibrary.Close Connection
-    Log    ${output}
-    [Return]    ${output}
-
-Start Mininet Linear
-    [Arguments]    ${switches}
-    [Documentation]    Start mininet linear topology with ${switches} nodes
-    Log To Console    \n
-    Log To Console    Starting mininet linear ${switches}
-    ${mininet_conn_id}=    Open Connection    ${MININET_IP}    prompt=${LINUX_PROMPT}    timeout=${switches*3}
-    Set Suite Variable    ${mininet_conn_id}
-    Login With Public Key    ${MININET_USER}    ${USER_HOME}/.ssh/id_rsa    any
-    Write    sudo mn --controller=remote,ip=${CONTROLLER_IP} --topo linear,${switches} --switch ovsk,protocols=OpenFlow13
-    Read Until    mininet>
-    Sleep    6
-
-Stop Mininet
-    [Documentation]    Stop mininet topology
-    Log To Console    Stopping Mininet
-    Switch Connection    ${mininet_conn_id}
-    Read
-    Write    exit
-    Read Until    ${LINUX_PROMPT}
-    Close Connection
-
-Check Mininet at Lower Level
-    [Documentation]    PoC for executing mininet commands at the lower level
-    Switch Connection    ${mininet_conn_id}
-    Read
-    Write    dpctl dump-flows -O OpenFlow13
-    ${output}=    Read Until    mininet>
-    Log    ${output}
-    Write    dump
-    ${output}=    Read Until    mininet>
-    Log    ${output}
-    Write    links
-    ${output}=    Read Until    mininet>
-    Log    ${output}
-    Write    ports
-    ${output}=    Read Until    mininet>
-    Log    ${output}
-
-Clean Mininet System
-    [Arguments]     ${mininet_system}=${MININET_IP}
-    [Documentation]    Cleans the mininet environment (sudo mn -c)
-    Run Command On Remote System    ${mininet_system}   sudo mn -c    ${CONTROLLER_USER}    ${LINUX_PROMPT}    600s
-
-Verify All Controller are up
-    [Documentation]    Verifies each controller is up by issuing a rest call and getting a 200
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}=    ONOS Get    ${ip}    devices
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-
-Verify Controllers are Not Dead
-    [Documentation]    Verifies each controller is not dead by making sure karaf log does not contain "OutOfMemoryError" and rest call still returns 200 
-    : FOR    ${ip}    IN    @{controller_list}
-    \    Verify Controller Is Not Dead    ${ip}
-
-Verify Controller Is Not Dead
-    [Arguments]    ${controller}
-    ${response}=    Run Command On Remote System    ${controller}   grep java.lang.OutOfMemoryError /opt/onos/log/karaf.log
-    Should Not Contain    ${response}    OutOfMemoryError
-    ${resp}    RequestsLibrary.Get    ${controller}    /onos/v1/devices
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-
-Experiment Links, Hosts, and Flows
-    [Documentation]    Currently this only returns the information the controller has on links, hosts, and flows. Checks can easily be implemented
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}=    ONOS Get    ${ip}    links
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    ${length}=    Get Length    ${jsondata['links']}
-    \    Log    ${resp.content}
-    \    ${resp}=    ONOS Get    ${ip}    flows
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    ${length}=    Get Length    ${jsondata['flows']}
-    \    Log    ${resp.content}
-    \    ${resp}=    ONOS Get    ${ip}    hosts
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    ${length}=    Get Length    ${jsondata['hosts']}
-    \    Log    ${resp.content}
-
-Ensure Topology
-    [Arguments]    ${device_count}    ${cluster_count}
-    [Documentation]    Verifies the devices count through /topoplogy api. Currently, cluster count is inconsistent (Possible bug, will look into it), so the check on that is ignored, but logged
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}=    ONOS Get    ${ip}    topology
-    \    Log    ${resp.content}
-    \    ${devices}=    Get Json Value    ${resp.content}    /devices
-    \    ${clusters}=    Get Json Value    ${resp.content}    /clusters
-    \    Should Be Equal As Strings    ${devices}    ${device_count}
-    \    #Should Be Equal As Strings    ${clusters}    ${cluster_count}
-
-Ensure No Switches in Topology
-    [Arguments]    ${cluster_count}
-    [Documentation]    Verifies the topology sees no devices
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}=    ONOS Get    ${ip}    topology
-    \    Log    ${resp.content}
-    \    ${devices}=    Get Json Value    ${resp.content}    /devices
-    \    ${clusters}=    Get Json Value    ${resp.content}    /clusters
-    \    Should Be Equal As Strings    ${devices}    0
-    \    #Should Be Equal As Strings    ${clusters}    ${cluster_count}
-
-ONOS Get
-    [Arguments]    ${session}    ${noun}
-    [Documentation]    Common keyword to issue GET requests to the controller. Arguments are the session (controller ip) and api path
-    ${resp}    RequestsLibrary.Get    ${session}    /onos/v1/${noun}
-    Log    ${resp.content}
-    [Return]    ${resp}
-
-Ensure Switch Count
-    [Arguments]    ${switch_count}
-    [Documentation]    Verfies the device count (passed in as arg) on each controller is accurate.
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}    ONOS Get    ${ip}    devices
-    \    Log    ${resp.content}
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-    \    Should Not Be Empty    ${resp.content}
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    ${length}=    Get Length    ${jsondata['devices']}
-    \    Should Be Equal As Integers    ${length}    ${switch_count}
-
-Ensure Switches are Available
-    [Documentation]    Verifies that the switch's availability state is true on all switches through all controllers
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}    ONOS Get    ${ip}    devices
-    \    Log    ${resp.content}
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-    \    Should Not Be Empty    ${resp.content}
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    #Robot tweak to do a nested for loop
-    \    Check Each Switch Status    ${jsondata}    True
-
-Check Each Switch Status
-    [Arguments]    ${jdata}    ${bool}
-    ${length}=    Get Length    ${jdata['devices']}
-    : FOR    ${INDEX}    IN RANGE    0    ${length}
-    \    ${data}=    Get From List    ${jdata['devices']}    ${INDEX}
-    \    ${status}=    Get From Dictionary    ${data}    available
-    \    Should Be Equal As Strings    ${status}    ${bool}
-
-Ensure No Switches are Available
-    [Documentation]    Verifies that the switch's availability state is false on all switches through all controllers
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}    ONOS Get    ${ip}    devices
-    \    Log    ${resp.content}
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-    \    Should Not Be Empty    ${resp.content}
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    Check Each Switch Status    ${jsondata}    False
-
-Check Each Switch Individually
-    [Documentation]    Currently just observe each information the device has. Checks can easily be implemented
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}    ONOS Get    ${ip}    devices
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    #Robot tweak to do a nested for loop
-    \    Check Each Switch    ${jsondata}
-
-Check Each Switch
-    [Arguments]    ${jdata}
-    ${length}=    Get Length    ${jdata['devices']}
-    @{dpid_list}=    Create List
-    : FOR    ${INDEX}    IN RANGE    0    ${length}
-    \    ${devicedata}=    Get From List    ${jdata['devices']}    ${INDEX}
-    \    ${id}=    Get From Dictionary    ${devicedata}    id
-    \    Append To List    ${dpid_list}    ${id}
-    \    Log    ${dpid_list}
-    ${length}=    Get Length    ${dpid_list}
-    : FOR    ${i}    IN    @{dpid_list}
-    \    ${resp}    ONOS Get    ${ip}    devices/${i}
-    \    Log    ${resp.content}
-
-Ensure Switch Role
-    [Arguments]    ${role}
-    [Documentation]    Verifies that the controller's role for each switch is MASTER (default in standalone mode)
-    : FOR    ${ip}    IN    @{controller_list}
-    \    ${resp}    ONOS Get    ${ip}    devices
-    \    Log    ${resp.content}
-    \    Should Be Equal As Strings    ${resp.status_code}    200
-    \    Should Not Be Empty    ${resp.content}
-    \    ${jsondata}    To JSON    ${resp.content}
-    \    Ensure Role    ${jsondata}    ${role}
-
-Ensure Role
-    [Arguments]    ${jdata}    ${role}
-    ${length}=    Get Length    ${jdata['devices']}
-    : FOR    ${INDEX}    IN RANGE    0    ${length}
-    \    ${data}=    Get From List    ${jdata['devices']}    ${INDEX}
-    \    ${status}=    Get From Dictionary    ${data}    role
-    \    Should Be Equal As Strings    ${status}    ${role}
-
-Get Karaf Logs
-    [Arguments]    ${controller}
-    [Documentation]    Compresses all the karaf log files on each controler and puts them on your pybot execution machine (in /tmp)
-    Run Command On Remote System    ${controller}    tar -zcvf /tmp/${SUITE NAME}.${controller}.tar.gz ${ONOS_HOME}/log
-    SSHLibrary.Open Connection    ${controller}    prompt=${LINUX_PROMPT}    timeout=${prompt_timeout}
-    Login With Public Key    ${CONTROLLER_USER}    ${USER_HOME}/.ssh/id_rsa    any
-    SSHLibrary.Get File    /tmp/${SUITE NAME}.${controller}.tar.gz    /tmp/
-    SSHLibrary.Close Connection