diff --git a/red.xml b/red.xml
index c8bb244..19b3b09 100644
--- a/red.xml
+++ b/red.xml
@@ -2,31 +2,31 @@
 <projectConfiguration>
     <configVersion>1.0</configVersion>
     <relativeTo>PROJECT</relativeTo>
-    <referencedLibrary type="PYTHON" name="RequestsLibrary" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="RequestsClientCert" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="UUID" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="Selenium2Library" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="ExtendedSelenium2Library" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="SSHLibrary" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="HTTPUtils" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="JSONUtils" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="HttpLibrary" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="HttpLibrary.HTTP" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="StringTemplater" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="OpenstackLibrary" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="HEATUtils" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="OSUtils" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="DNSUtils" path="ete-testsuite/robot/library/eteutils"/>
-    <referencedLibrary type="PYTHON" name="ArchiveLibrary" path="ete-testsuite/robot/library"/>
-    <referencedLibrary type="PYTHON" name="HeatBridge" path="ete-testsuite/robot/library/heatbridge"/>
+    <referencedLibrary type="PYTHON" name="RequestsLibrary" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="RequestsClientCert" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="UUID" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="Selenium2Library" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="ExtendedSelenium2Library" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="SSHLibrary" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="HTTPUtils" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="JSONUtils" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="HttpLibrary" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="HttpLibrary.HTTP" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="StringTemplater" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="OpenstackLibrary" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="HEATUtils" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="OSUtils" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="DNSUtils" path="testsuite/robot/library/eteutils"/>
+    <referencedLibrary type="PYTHON" name="ArchiveLibrary" path="testsuite/robot/library"/>
+    <referencedLibrary type="PYTHON" name="HeatBridge" path="testsuite/robot/library/heatbridge"/>
     <pythonpath>
         <path location="robot/library"/>
     </pythonpath>
     <classpath/>
-    <variableFiles path="ete-testsuite/ete-properties/dfw_robot_properties_local.py"/>
-    <variableFiles path="ete-testsuite/ete-properties/dfw_preload_parameters.py"/>
-    <variableFiles path="ete-testsuite/ete-properties/dfw_vm_properties.py"/>
-    <variableFiles path="ete-testsuite/robot/assets/service_mappings.py"/>
+    <variableFiles path="testsuite/ete-properties/dfw_robot_properties_local.py"/>
+    <variableFiles path="testsuite/ete-properties/dfw_preload_parameters.py"/>
+    <variableFiles path="testsuite/ete-properties/dfw_vm_properties.py"/>
+    <variableFiles path="testsuite/robot/assets/service_mappings.py"/>
     <excludedForValidation/>
     <isValidatedFileSizeCheckingEnabled>true</isValidatedFileSizeCheckingEnabled>
     <validatedFileMaxSize>1024</validatedFileMaxSize>
diff --git a/robot/resources/aai/create_tenant.robot b/robot/resources/aai/create_tenant.robot
index e5a5596..756882e 100644
--- a/robot/resources/aai/create_tenant.robot
+++ b/robot/resources/aai/create_tenant.robot
@@ -11,76 +11,78 @@
 
 
 *** Variables ***
-${INDEX PATH}     /aai/v8 
+${INDEX PATH}     /aai/v8
 ${ROOT_TENANT_PATH}  /cloud-infrastructure/cloud-regions/cloud-region/
 
 ${SYSTEM USER}    robot-ete
 ${AAI_ADD_TENANT_BODY}=    robot/assets/templates/aai/add_tenant_body.template
 
-*** Keywords ***    
+*** Keywords ***
 Inventory Tenant If Not Exists
-    [Documentation]    Creates a service in A&AI if it doesn't exist	
+    [Documentation]    Creates a service in A&AI if it doesn't exist
     [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}
     ${dict}=    Get Tenants    ${cloud_owner}   ${cloud_region_id}
-    ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${tenant_id} 
+    ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${tenant_id}
     Run Keyword If    '${status}' == 'FAIL'    Inventory Tenant    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}
-        
+
 Inventory Tenant
-    [Documentation]    Inventorys a Tenant in A&AI	
-    [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}       
+    [Documentation]    Inventorys a Tenant in A&AI
+    [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}    ${tenant_id}    ${tenant_name}
     ${json_resource_version}=   Get Resource Version If Exists   ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}
     ${data_template}=    OperatingSystem.Get File    ${AAI_ADD_TENANT_BODY}
-    ${arguments}=    Create Dictionary     cloud_owner=${cloud_owner}  cloud_region_id=${cloud_region_id}  cloud_type=${cloud_type}    owner_defined_type=${owner_defined_type}    cloud_region_version=${cloud_region_version}    cloud_zone=${cloud_zone}    tenant_id=${tenant_id}    tenant_name=${tenant_name}   resource_version=${json_resource_version}       
-    ${data}=	Fill JSON Template    ${data_template}    ${arguments}        
+    ${arguments}=    Create Dictionary     cloud_owner=${cloud_owner}  cloud_region_id=${cloud_region_id}  cloud_type=${cloud_type}    owner_defined_type=${owner_defined_type}    cloud_region_version=${cloud_region_version}    cloud_zone=${cloud_zone}    tenant_id=${tenant_id}    tenant_name=${tenant_name}   resource_version=${json_resource_version}
+    ${data}=	Fill JSON Template    ${data_template}    ${arguments}
 	${put_resp}=    Run A&AI Put Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}     ${data}
     ${status_string}=    Convert To String    ${put_resp.status_code}
-    Should Match Regexp    ${status_string} 	^(201|200)$   
+    Should Match Regexp    ${status_string} 	^(201|200)$
 
 Get Resource Version If Exists
-    [Documentation]    Creates a service in A&AI if it doesn't exist	
+    [Documentation]    Creates a service in A&AI if it doesn't exist
     [Arguments]    ${cloud_owner}  ${cloud_region_id}  ${cloud_type}    ${owner_defined_type}    ${cloud_region_version}    ${cloud_zone}
     ${resource_version}=   Set Variable
     ${resp}=    Get Cloud Region    ${cloud_owner}   ${cloud_region_id}
     Return from Keyword if   '${resp.status_code}' != '200'   ${resource_version}
     ${json}=   Set Variable   ${resp.json()}
-    ${resource_version}=   Catenate   ${json['resource-version']}  
-    [Return]   "resource-version":"${resource_version}", 
-        
+    ${resource_version}=   Catenate   ${json['resource-version']}
+    [Return]   "resource-version":"${resource_version}",
+
 
 Delete Tenant
-    [Documentation]    Removes both Tenant 
+    [Documentation]    Removes both Tenant
     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}
-    ${get_resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants/tenant/${tenant_id}      
+    ${get_resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants/tenant/${tenant_id}
     Run Keyword If    '${get_resp.status_code}' == '200'    Delete Tenant Exists    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${get_resp.json()['resource-version']}
 
 Delete Tenant Exists
     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${resource_version}
-    ${put_resp}=    Run A&AI Delete Request    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants/tenant/${tenant_id}    ${resource_version} 
-    Should Be Equal As Strings 	${put_resp.status_code} 	204   
-  
+    ${put_resp}=    Run A&AI Delete Request    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants/tenant/${tenant_id}    ${resource_version}
+    Should Be Equal As Strings 	${put_resp.status_code} 	204
+
 Delete Cloud Region
     [Documentation]    Removes both Tenant and Cloud Region in A&AI
     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}
-    ${get_resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}    
+    ${get_resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}
 	Run Keyword If    '${get_resp.status_code}' == '200'    Delete Cloud Region Exists   ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${get_resp.json()['resource-version']}
-	
+
 Delete Cloud Region Exists
+    [Documentation]   Delete may get status 400 (Bad Request) if the region is still referenced
     [Arguments]    ${tenant_id}    ${cloud_owner}    ${cloud_region_id}    ${resource_version}
     ${put_resp}=    Run A&AI Delete Request    ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}   ${resource_version}
-    Should Be Equal As Strings 	${put_resp.status_code} 	204     
-    
+    ${status_string}=    Convert To String    ${put_resp.status_code}
+    Should Match Regexp    ${status_string}    ^(204|400)$
+
 Get Tenants
-    [Documentation]   Return list of tenants for this cloud owner/region    
-    [Arguments]    ${cloud_owner}    ${cloud_region_id}	
+    [Documentation]   Return list of tenants for this cloud owner/region
+    [Arguments]    ${cloud_owner}    ${cloud_region_id}
 	${resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}/tenants
-	${dict}=    Create Dictionary    
+	${dict}=    Create Dictionary
     ${status}    ${value}=    Run Keyword And Ignore Error    Should Be Equal As Strings 	${resp.status_code} 	200
-    Run Keyword If    '${status}' == 'PASS'    Update Tenant Dictionary    ${dict}    ${resp.json()}      
+    Run Keyword If    '${status}' == 'PASS'    Update Tenant Dictionary    ${dict}    ${resp.json()}
 	[Return]  ${dict}
 
 Get Cloud Region
-    [Documentation]   Returns the Cloud Region if it exists    
-    [Arguments]    ${cloud_owner}    ${cloud_region_id}	
+    [Documentation]   Returns the Cloud Region if it exists
+    [Arguments]    ${cloud_owner}    ${cloud_region_id}
 	${resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_TENANT_PATH}${cloud_owner}/${cloud_region_id}
 	[Return]  ${resp}
 
@@ -89,9 +91,8 @@
     ${list}=    Evaluate    ${json}['tenant']
     :for   ${map}    in    @{list}
     \    ${status}    ${tenant_id}=     Run Keyword And Ignore Error    Get From Dictionary    ${map}    tenant-id
-    \    Run Keyword If    '${status}' == 'PASS'    Set To Dictionary    ${dict}    ${tenant_id}=${map}    
+    \    Run Keyword If    '${status}' == 'PASS'    Set To Dictionary    ${dict}    ${tenant_id}=${map}
     Log    ${dict}
-    
-    
 
-    
\ No newline at end of file
+
+
diff --git a/robot/resources/ssh/files.robot b/robot/resources/ssh/files.robot
index 798ce89..fcfffbb 100644
--- a/robot/resources/ssh/files.robot
+++ b/robot/resources/ssh/files.robot
@@ -1,7 +1,7 @@
 *** Settings ***
 Documentation     Some handy Keywords for accessing log files over SSH.  Assumptions are that logs will belong to users other than the currently logged in user and that sudo will be required
 Library           OperatingSystem
-Library 	      SSHLibrary   
+Library 	      SSHLibrary
 Library           HttpLibrary.HTTP
 Library           String
 Library           Collections
@@ -11,27 +11,27 @@
 *** Keywords ***
 Open Connection And Log In
    [Documentation]    Open a connection using the passed user and SSH key. Connection alias will be the host name by default.
-   [Arguments]    ${HOST}    ${user}    ${pvt}    ${password}=    ${alias}=${HOST}    ${timeout}=20s
+   [Arguments]    ${HOST}    ${user}    ${pvt}    ${password}=    ${alias}=${HOST}    ${timeout}=120s
    Open Connection    ${HOST}    alias=${alias}    timeout=${timeout}
    Login With Public Key    ${user}    ${pvt}    password=${password}    delay=0.5 seconds
 
 Grep Local File
-    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using the current connection 
+    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using the current connection
     [Arguments]    ${pattern}     ${fullpath}
-    ${output}=    Execute Command    grep ${pattern} ${fullpath}  
+    ${output}=    Execute Command    grep ${pattern} ${fullpath}
     [Return]     ${output}
-    
+
  Grep File on Host
-    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using passed connection alias/host 
+    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using passed connection alias/host
     [Arguments]     ${host}    ${pattern}     ${fullpath}
     Switch Connection    ${host}
     ${output}=    Grep Local File    ${pattern}    ${fullpath}
-    @{lines}=    Split To Lines    ${output}   
+    @{lines}=    Split To Lines    ${output}
     [Return]     @{lines}
 
 Grep File on Hosts
-    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using passed list of connections 
-    [Arguments]    ${HOSTS}    ${pattern}    ${fullpath} 
+    [Documentation]     Grep the passed file name and return all of the lines that match the passed pattern using passed list of connections
+    [Arguments]    ${HOSTS}    ${pattern}    ${fullpath}
     &{map}=    Create Dictionary
     :FOR    ${HOST}    IN    @{HOSTS}
     \    Log    ${HOST}
@@ -40,11 +40,11 @@
     [Return]    &{map}
 
 Tail File on Host Until
-    [Documentation]     Tail log file into grep which returns file lines containing the grep pattern. Will timeout after timeout= if expected pattern not received.   
+    [Documentation]     Tail log file into grep which returns file lines containing the grep pattern. Will timeout after timeout= if expected pattern not received.
     [Arguments]    ${host}    ${pattern}    ${fullpath}    ${expected}    ${timeout}=60    ${options}=-c -0
     Switch Connection    ${host}
-    ${tailcommand}=    Catenate    tail ${options} -f ${fullpath} | grep --color=never ${pattern}    
+    ${tailcommand}=    Catenate    tail ${options} -f ${fullpath} | grep --color=never ${pattern}
     Write    ${tailcommand}
-    ${stdout}=	Read Until Regexp    ${expected}   	 
+    ${stdout}=	Read Until Regexp    ${expected}
     @{lines}=    Split To Lines    ${stdout}
     [Return]    @{lines}
diff --git a/robot/resources/stack_validation/validate_vfw.robot b/robot/resources/stack_validation/validate_vfw.robot
index 51f29b4..052eaf1 100644
--- a/robot/resources/stack_validation/validate_vfw.robot
+++ b/robot/resources/stack_validation/validate_vfw.robot
@@ -23,72 +23,71 @@
 *** Keywords ***
 Validate Firewall Stack
     [Documentation]    Identifies the firewall servers in the VFW Stack in the GLOBAL_OPENSTACK_SERVICE_REGION
-    [Arguments]    ${STACK_NAME}    
+    [Arguments]    ${STACK_NAME}
     Run Openstack Auth Request    auth
     ${stack_info}=    Wait for Stack to Be Deployed    auth    ${STACK_NAME}
     ${stack_id}=    Get From Dictionary    ${stack_info}    id
-    ${server_list}=    Get Openstack Servers    auth 
+    ${server_list}=    Get Openstack Servers    auth
 
     ${vpg_unprotected_ip}=    Get From Dictionary    ${stack_info}    vpg_private_ip_0
     ${vsn_protected_ip}=    Get From Dictionary    ${stack_info}    vsn_private_ip_0
     ${vpg_name_0}=    Get From Dictionary    ${stack_info}    vpg_name_0
-    ${vfw_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vfw_name_0    network_name=public     
-    ${vpg_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vpg_name_0    network_name=public     
-    ${vsn_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vsn_name_0    network_name=public     
-    
+    ${vfw_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vfw_name_0    network_name=public
+    ${vpg_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vpg_name_0    network_name=public
+    ${vsn_public_ip}=    Get Server Ip    ${server_list}    ${stack_info}   vsn_name_0    network_name=public
+
     Wait For Server    ${vfw_public_ip}
     Wait For Server    ${vpg_public_ip}
     Wait For Server    ${vsn_public_ip}
     Log    Accessed all servers
-    Wait For Firewall    ${vfw_public_ip}        
-    Wait For Packet Generator    ${vpg_public_ip}      
-    Wait For Packet Sink    ${vsn_public_ip}        
+    Wait For Firewall    ${vfw_public_ip}
+    Wait For Packet Generator    ${vpg_public_ip}
+    Wait For Packet Sink    ${vsn_public_ip}
     Log    All server processes up
     ${appc}=    Create Mount Point In APPC    ${vpg_name_0}    ${vpg_public_ip}
 
     # Following hack was implemented because the stack doesn't always come up clean
     # It was found that rebooting the servers at this point did not improve the
-    # chances of the packets flowing to the SNK 
+    # chances of the packets flowing to the SNK
     #${status}    ${data}=    Run Keyword And Ignore Error    Wait For Packets   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}
     #Return From Keyword if    '${status}' == 'PASS'
     #Close All Connections
-    #Find And Reboot The Server    ${stack_info}    ${server_list}    vfw_name_0 
-    #Find And Reboot The Server    ${stack_info}    ${server_list}    vpg_name_0 
+    #Find And Reboot The Server    ${stack_info}    ${server_list}    vfw_name_0
+    #Find And Reboot The Server    ${stack_info}    ${server_list}    vpg_name_0
     #Find And Reboot The Server    ${stack_info}    ${server_list}    vsn_name_0
-    ## Gives some time for servers to shutdown 
-    #Sleep    10s 
+    ## Gives some time for servers to shutdown
+    #Sleep    10s
     #Wait For Server    ${vfw_public_ip}
     #Wait For Server    ${vpg_public_ip}
     #Wait For Server    ${vsn_public_ip}
 
     Wait For Packets   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}
-    
+
 Wait For Packets
     [Documentation]    Final vfw validation that packets are flowing from the pgn VM  to the snk VM
-    [Arguments]   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}             
+    [Arguments]   ${vpg_public_ip}   ${vpg_unprotected_ip}   ${vsn_protected_ip}   ${vsn_public_ip}
     ${resp}=    Enable Stream    ${vpg_public_ip}
     Should Be Equal As Strings    ${resp.status_code}    200
-    ${syslog_message}=    Catenate    UDP: short packet: From ${vpg_unprotected_ip}:.* to ${vsn_protected_ip}:.* 
+    ${syslog_message}=    Catenate    UDP: short packet: From ${vpg_unprotected_ip}:.* to ${vsn_protected_ip}:.*
     Tail File on Host Until    ${vsn_public_ip}    UDP:    /var/log/syslog    ${syslog_message}    timeout=120s
-    Disable All Streams    ${vpg_public_ip}    
+    Disable All Streams    ${vpg_public_ip}
 
 
 Wait For Firewall
     [Documentation]     Wait for the defined firewall processes to come up
-    [Arguments]    ${ip}    
-    Wait for Process on Host    ./vpp_measurement_reporter    ${ip}    
-    Wait for Process on Host    vpp -c /etc/vpp/startup.conf    ${ip}    
+    [Arguments]    ${ip}
+    Wait for Process on Host    ./vpp_measurement_reporter    ${ip}
+    Wait for Process on Host    vpp -c /etc/vpp/startup.conf    ${ip}
 
 Wait For Packet Generator
     [Documentation]     Wait for the defined packet generator processes to come up
-    [Arguments]    ${ip}    
-    Wait for Process on Host    vpp -c /etc/vpp/startup.conf    ${ip}    
-    Wait for Process on Host    java .* -jar /opt/honeycomb/Honeycomb/vpp-integration/minimal-distribution/target/vpp-integration-distribution-1.16.9-hc/vpp-integration-distribution-1.16.9/vpp-integration-distribution-1.16.9.jar    ${ip}    
+    [Arguments]    ${ip}
+    Wait for Process on Host    vpp -c /etc/vpp/startup.conf    ${ip}
     Wait Until Keyword Succeeds    180s    5s    Tail File on Host Until    ${ip}    Honeycomb    /var/log/honeycomb/honeycomb.log    - Honeycomb initialized   options=-c +0    timeout=120s
-    Run Keyword And Ignore Error    Wait for Process on Host    run_traffic_fw_demo.sh    ${ip}    timeout=60s  
+    Run Keyword And Ignore Error    Wait for Process on Host    run_traffic_fw_demo.sh    ${ip}    timeout=60s
     Pkill Process On Host    "/bin/bash ./run_traffic_fw_demo.sh"    ${ip}
-    
+
 Wait For Packet Sink
     [Documentation]     Wait for the defined packet sink processes to come up
     [Arguments]    ${ip}
-    Log    noting to check on ${ip}    
+    Log    noting to check on ${ip}
diff --git a/runTags.sh b/runTags.sh
index 5a51e25..75b792e 100644
--- a/runTags.sh
+++ b/runTags.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # Set the defaults
-DEFAULT_LOG_LEVEL="INFO" # Available levels: TRACE, DEBUG, INFO (default), WARN, NONE (no logging)
+DEFAULT_LOG_LEVEL="TRACE" # Available levels: TRACE, DEBUG, INFO (default), WARN, NONE (no logging)
 DEFAULT_RES="1280x1024x24"
 DEFAULT_DISPLAY=":99"
 DEFAULT_ROBOT_TEST="-i health"
