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
