Add dcaegen2 test cases for HTTPS 51/16051/2
authorpswang <pshaobow@gmail.com>
Wed, 27 Sep 2017 17:45:03 +0000 (12:45 -0500)
committerLusheng Ji <lji@research.att.com>
Wed, 27 Sep 2017 18:36:22 +0000 (18:36 +0000)
Change-Id: Iaa2cf237015906a151b399b330ac71dd1e48fa0c
Signed-off-by: pswang <pshaobow@gmail.com>
IssueId:  DCAEGEN2-111

test/csit/plans/dcaegen2/testsuites/setup.sh
test/csit/tests/dcaegen2/testcases/dcae_ves.robot
test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
test/csit/tests/dcaegen2/testcases/resources/collector.properties [new file with mode: 0755]
test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh [new file with mode: 0755]

index 3068b50..6692bb2 100755 (executable)
@@ -20,7 +20,6 @@
 
 #get current host IP addres
 HOST_IP=$(ip route get 8.8.8.8 | awk '/8.8.8.8/ {print $NF}')
-echo HOST_IP=${HOST_IP}
 
 VESC_IMAGE=nexus3.onap.org:10001/onap/org.onap.dcaegen2.collectors.ves.vescollector:1.1
 echo VESC_IMAGE=${VESC_IMAGE}
@@ -30,9 +29,11 @@ docker run -d -p 8080:8080/tcp -p 8443:8443/tcp -P --name vesc -e DMAAPHOST=${HO
 
 VESC_IP=`get-instance-ip.sh vesc`
 export VESC_IP=${VESC_IP}
+export HOST_IP=${HOST_IP}
 
 export ROBOT_VARIABLES="--pythonpath ${WORKSPACE}/test/csit/tests/dcaegen2/testcases/resources"
 
+pip install jsonschema uuid
 # Wait container ready
 sleep 5
 
index 00c5807..eee6ea5 100644 (file)
-*** Settings ***\r
-Documentation    Testing DCAE VES Listener with various event feeds from VoLTE, vDNS, vFW and cCPE use scenarios\r
-\r
-Library              RequestsLibrary   \r
-Library           OperatingSystem\r
-Library           Collections\r
-Library           DcaeLibrary\r
-Resource          resources/dcae_keywords.robot\r
-Test Setup        Cleanup VES Events\r
-Suite Setup       VES Collector Suite Setup DMaaP\r
-Suite Teardown    VES Collector Suite Shutdown DMaaP    \r
-\r
-\r
-\r
-\r
-*** Variables ***\r
-${VESC_URL_HTTPS}                        https://%{VESC_IP}:8443\r
-${VESC_URL}                              http://%{VESC_IP}:8080\r
-${VES_ANY_EVENT_PATH}                    /eventListener/v5\r
-${VES_BATCH_EVENT_PATH}                 /eventListener/v5/eventBatch\r
-${VES_THROTTLE_STATE_EVENT_PATH}         /eventListener/v5/clientThrottlingState\r
-${HEADER_STRING}                         content-type=application/json\r
-${EVENT_DATA_FILE}                       %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_single_fault_event.json\r
-${EVENT_MEASURE_FILE}                    %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_vfirewall_measurement.json\r
-${EVENT_DATA_FILE_BAD}                   %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_single_fault_event_bad.json\r
-${EVENT_BATCH_DATA_FILE}                 %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_fault_eventlist_batch.json\r
-${EVENT_THROTTLING_STATE_DATA_FILE}      %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_fault_provide_throttle_state.json\r
-\r
-\r
-#DCAE Health Check\r
-${CONFIG_BINDING_URL}                    http://localhost:8443\r
-${CB_HEALTHCHECK_PATH}                   /healthcheck\r
-${CB_SERVICE_COMPONENT_PATH}             /service_component/\r
-${VES_Service_Name1}                     dcae-controller-ves-collector\r
-${VES_Service_Name2}                     ves-collector-not-exist\r
-\r
-*** Comment out from R1 release ***\r
-DCAE Health Check\r
-    [Tags]    DCAE-HealthCheck\r
-    [Documentation]   Get DCAE Overall Status\r
-    ${auth}=  Create List  ${GLOBAL_DCAE_USERNAME}  ${GLOBAL_DCAE_PASSWORD}\r
-    ${session}=    Create Session      dcae-health-check       ${CONFIG_BINDING_URL}    auth=${auth}\r
-    ${resp}=   Get Request     dcae-health-check       ${CB_HEALTHCHECK_PATH}\r
-    Should Be Equal As Strings         ${resp.status_code}     200\r
-\r
-\r
-Get VES Collector Service Status\r
-    [Tags]    DCAE-HealthCheck\r
-    [Documentation]   Get the status of a VES Collector Service Component based on service name\r
-    ${urlpath}=    Catenate  SEPARATOR= ${CB_SERVICE_COMPONENT_PATH} ${VES_Service_Name1}\r
-    Log   Service component name for status query: ${urlpath}\r
-    ${resp}=  Get DCAE Service Component Status   ${CONFIG_BINDING_URL}  ${CB_SERVICE_COMPONENT_PATH}  ${GLOBAL_DCAE_USERNAME}  ${GLOBAL_DCAE_PASSWORD}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     200\r
-    ${isEmpty}=   Is Json Empty    ${resp}\r
-    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}\r
-    \r
-    \r
-    \r
-#*** Comment out from R1 release ***\r
-Publish VES VoLTE Fault Provide Throttling State\r
-    [Tags]    DCAE-D1\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_THROTTLING_STATE_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    ${resp}=  Publish Event To VES Collector    ${VES_VOLTE_URL}  ${VES_THROTTLE_STATE_EVENT_PATH}  ${headers}  ${evtdata}  ${GLOBAL_DCAE_USERNAME}  ${GLOBAL_DCAE_PASSWORD}\r
-    Should Be Equal As Strings         ${resp.status_code}     204\r
-    \r
-Publish VES Event With Invalid Method\r
-    [Tags]    DCAE-D1\r
-    [Documentation]    Use invalid Put instead of Post method to expect 405 response\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    Log   Send HTTP Request with invalid method Put instead of Post\r
-    ${resp}=  Publish Event To VES Collector With Put Method   ${VES_VOLTE_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}  ${GLOBAL_DCAE_USERNAME}  ${GLOBAL_DCAE_PASSWORD}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     405\r
-    \r
-    \r
-Publish VES Event With Invalid URL Path\r
-    [Tags]    DCAE-D1\r
-    [Documentation]    Use invalid url path to expect 404 response\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    Log   Send HTTP Request with invalid /listener/v5/ instead of /eventlistener/v5 path\r
-    ${resp}=  Publish Event To VES Collector    ${VES_VOLTE_URL}  /listener/v5/  ${headers}  ${evtdata}  ${GLOBAL_DCAE_USERNAME}  ${GLOBAL_DCAE_PASSWORD}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     404\r
-\r
-Publish VES Event With Invalid Login\r
-    [Tags]    DCAE-D1\r
-    [Documentation]    Use invalid user or password to expect 401 response\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    Log   Send HTTP Request with invalid User: BadUserName\r
-    ${resp}=  Publish Event To VES Collector    ${VES_VOLTE_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}  BadUserName  ${GLOBAL_DCAE_PASSWORD}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     401\r
-    \r
-*** Test Cases ***\r
-VES Collector Health Check\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]   Ves Collector Health Check\r
-    ${uuid}=    Generate UUID\r
-    ${session}=    Create Session      dcae    ${VESC_URL}\r
-    ${headers}=  Create Dictionary     Accept=*/*     X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}\r
-    ${resp}=   Get Request     dcae    /healthcheck        headers=${headers}\r
-    Should Be Equal As Strings         ${resp.status_code}     200\r
-    \r
-\r
-Publish Single VES VoLTE Fault Event\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]   Post single event and expect 200 Response \r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     200\r
-    ${isEmpty}=   Is Json Empty    ${resp}\r
-    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}\r
-    ${ret}=  DMaaP Message Receive    ab305d54-85b4-a31b-7db2-fb6b9e546015\r
-    Should Be Equal As Strings    ${ret}    true\r
-\r
-Publish Single VES VNF Measurement Event\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]   Post single event and expect 200 Response \r
-    ${evtdata}=   Get Event Data From File   ${EVENT_MEASURE_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}   ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     200\r
-    ${isEmpty}=   Is Json Empty    ${resp}\r
-    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}\r
-    ${ret}=  DMaaP Message Receive    0b2b5790-3673-480a-a4bd-5a00b88e5af6\r
-    Should Be Equal As Strings    ${ret}    true\r
-\r
-Publish VES VoLTE Fault Batch Events\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]   Post batched events and expect 202 Response \r
-    ${evtdata}=   Get Event Data From File   ${EVENT_BATCH_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  ${VES_BATCH_EVENT_PATH}  ${headers}  ${evtdata}\r
-    Should Be Equal As Strings         ${resp.status_code}     200\r
-    ${ret}=  DMaaP Message Receive    ab305d54-85b4-a31b-7db2-fb6b9e546016\r
-    Should Be Equal As Strings    ${ret}    true    \r
-    \r
-    \r
-Publish Single VES VoLTE Fault Event With Bad Data\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]    Run with JSON Envent with missing comma to expect 400 response\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE_BAD}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}  \r
-    Log   Send HTTP Request with invalid Json Event Data\r
-    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     400\r
-    ${isEmpty}=   Is Json Empty    ${resp}\r
-    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}\r
-    \r
-Publish VES Event With Invalid Method\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]    Use invalid Put instead of Post method to expect 405 response\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    Log   Send HTTP Request with invalid method Put instead of Post\r
-    ${resp}=  Publish Event To VES Collector With Put Method No Auth  ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     404\r
-    \r
-    \r
-Publish VES Event With Invalid URL Path\r
-    [Tags]    DCAE-VESC-R1\r
-    [Documentation]    Use invalid url path to expect 404 response\r
-    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}\r
-    ${headers}=   Create Header From String    ${HEADER_STRING}\r
-    Log   Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path\r
-    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  /listener/v5/  ${headers}  ${evtdata}\r
-    Log    Receive HTTP Status code ${resp.status_code}\r
-    Should Be Equal As Strings         ${resp.status_code}     404\r
-    \r
-\r
-    \r
-        \r
-    \r
-  \r
-    \r
-  \r
-\r
-\r
+*** Settings ***
+Documentation    Testing DCAE VES Listener with various event feeds from VoLTE, vDNS, vFW and cCPE use scenarios
+
+Library          RequestsLibrary   
+Library           OperatingSystem
+Library           Collections
+Library           DcaeLibrary
+Resource          resources/dcae_keywords.robot
+Test Setup        Cleanup VES Events
+Suite Setup       VES Collector Suite Setup DMaaP
+Suite Teardown    VES Collector Suite Shutdown DMaaP    
+
+
+
+
+*** Variables ***
+${VESC_URL_HTTPS}                        https://%{VESC_IP}:8443
+${VESC_URL}                              http://%{VESC_IP}:8080 
+${VES_ANY_EVENT_PATH}                    /eventListener/v5
+${VES_BATCH_EVENT_PATH}                 /eventListener/v5/eventBatch
+${VES_THROTTLE_STATE_EVENT_PATH}         /eventListener/v5/clientThrottlingState
+${HEADER_STRING}                         content-type=application/json
+${EVENT_DATA_FILE}                       %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_single_fault_event.json
+${EVENT_MEASURE_FILE}                    %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_vfirewall_measurement.json
+${EVENT_DATA_FILE_BAD}                   %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_single_fault_event_bad.json
+${EVENT_BATCH_DATA_FILE}                 %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_fault_eventlist_batch.json
+${EVENT_THROTTLING_STATE_DATA_FILE}      %{WORKSPACE}/test/csit/tests/dcaegen2/testcases/assets/json_events/ves_volte_fault_provide_throttle_state.json
+
+
+#DCAE Health Check
+${CONFIG_BINDING_URL}                    http://localhost:8443
+${CB_HEALTHCHECK_PATH}                   /healthcheck
+${CB_SERVICE_COMPONENT_PATH}             /service_component/
+${VES_Service_Name1}                     dcae-controller-ves-collector
+${VES_Service_Name2}                     ves-collector-not-exist
+
+    
+*** Test Cases ***    
+
+VES Collector Health Check
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Ves Collector Health Check
+    ${uuid}=    Generate UUID
+    ${session}=    Create Session      dcae    ${VESC_URL}
+    ${headers}=  Create Dictionary     Accept=*/*     X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
+    ${resp}=   Get Request     dcae    /healthcheck        headers=${headers}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    
+
+Publish Single VES VoLTE Fault Event
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Post single event and expect 200 Response 
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    ${isEmpty}=   Is Json Empty    ${resp}
+    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}
+    ${ret}=  DMaaP Message Receive    ab305d54-85b4-a31b-7db2-fb6b9e546015
+    Should Be Equal As Strings    ${ret}    true
+
+Publish Single VES VNF Measurement Event
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Post single event and expect 200 Response 
+    ${evtdata}=   Get Event Data From File   ${EVENT_MEASURE_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}   ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    ${isEmpty}=   Is Json Empty    ${resp}
+    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}
+    ${ret}=  DMaaP Message Receive    0b2b5790-3673-480a-a4bd-5a00b88e5af6
+    Should Be Equal As Strings    ${ret}    true
+
+Publish VES VoLTE Fault Batch Events
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Post batched events and expect 202 Response 
+    ${evtdata}=   Get Event Data From File   ${EVENT_BATCH_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  ${VES_BATCH_EVENT_PATH}  ${headers}  ${evtdata}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    ${ret}=  DMaaP Message Receive    ab305d54-85b4-a31b-7db2-fb6b9e546016
+    Should Be Equal As Strings    ${ret}    true    
+    
+    
+Publish Single VES VoLTE Fault Event With Bad Data
+    [Tags]    DCAE-VESC-R1
+    [Documentation]    Run with JSON Envent with missing comma to expect 400 response
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE_BAD}
+    ${headers}=   Create Header From String    ${HEADER_STRING}  
+    Log   Send HTTP Request with invalid Json Event Data
+    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     400
+    ${isEmpty}=   Is Json Empty    ${resp}
+    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}
+    
+Publish VES Event With Invalid Method
+    [Tags]    DCAE-VESC-R1
+    [Documentation]    Use invalid Put instead of Post method to expect 405 response
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    Log   Send HTTP Request with invalid method Put instead of Post
+    ${resp}=  Publish Event To VES Collector With Put Method No Auth  ${VESC_URL}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     404
+    
+    
+Publish VES Event With Invalid URL Path
+    [Tags]    DCAE-VESC-R1
+    [Documentation]    Use invalid url path to expect 404 response
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    Log   Send HTTP Request with invalid /listener/v5/ instead of /eventListener/v5 path
+    ${resp}=  Publish Event To VES Collector No Auth    ${VESC_URL}  /listener/v5/  ${headers}  ${evtdata}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     404
+    
+    
+Enable VESC HTTPS And Basic Auth
+    [Tags]    DCAE-VESC-R1
+    [Documentation]    Enable VESC Https and Authentication, Disable Http and Run Health Check
+    Enable VESC Https Auth
+    
+    ${auth}=  Create List  ${VESC_HTTPS_USER}   ${VESC_HTTPS_PD}
+    ${session}=    Create Session      dcaegen2-r1     ${VESC_URL_HTTPS}    auth=${auth}   disable_warnings=1
+    ${headers}=  Create Dictionary     Accept=*/*    X-FromAppId=${GLOBAL_APPLICATION_ID}
+    ${resp}=   Get Request     dcaegen2-r1     /healthcheck        headers=${headers}
+    Should Be Equal As Strings         ${resp.status_code}     200
+
+Publish Single VES Fault Event Over HTTPS
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Post single event and expect 200 Response 
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    Log  Login User=${VESC_HTTPS_USER}, Pd=${VESC_HTTPS_PD}
+    ${resp}=  Publish Event To VES Collector    ${VESC_URL_HTTPS}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}  sample1  sample1
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    ${isEmpty}=   Is Json Empty    ${resp}
+    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}
+    ${ret}=  DMaaP Message Receive    ab305d54-85b4-a31b-7db2-fb6b9e546015
+    Should Be Equal As Strings    ${ret}    true
+    
+    
+Publish Single VES Measurement Event Over HTTPS
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Post single event and expect 200 Response 
+    ${evtdata}=   Get Event Data From File   ${EVENT_MEASURE_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    ${resp}=  Publish Event To VES Collector  ${VESC_URL_HTTPS}  ${VES_ANY_EVENT_PATH}  ${headers}  ${evtdata}  ${VESC_HTTPS_USER}  ${VESC_HTTPS_PD}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    ${isEmpty}=   Is Json Empty    ${resp}
+    Run Keyword If   '${isEmpty}' == False   Log  ${resp.json()}
+    ${ret}=  DMaaP Message Receive    0b2b5790-3673-480a-a4bd-5a00b88e5af6
+    Should Be Equal As Strings    ${ret}    true
+
+Publish VES Fault Batch Events Over HTTPS
+    [Tags]    DCAE-VESC-R1
+    [Documentation]   Post batched events and expect 202 Response 
+    ${evtdata}=   Get Event Data From File   ${EVENT_BATCH_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    ${resp}=  Publish Event To VES Collector  ${VESC_URL_HTTPS}  ${VES_BATCH_EVENT_PATH}  ${headers}  ${evtdata}  ${VESC_HTTPS_USER}  ${VESC_HTTPS_PD}
+    Should Be Equal As Strings         ${resp.status_code}     200
+    ${ret}=  DMaaP Message Receive    ab305d54-85b4-a31b-7db2-fb6b9e546016
+    Should Be Equal As Strings    ${ret}    true
+
+
+Publish VES Event With Invalid URL Path HTTPS
+    [Tags]    DCAE-VESC-R1
+    [Documentation]    Use invalid url path to expect 404 response
+    ${evtdata}=   Get Event Data From File   ${EVENT_DATA_FILE}
+    ${headers}=   Create Header From String    ${HEADER_STRING}
+    Log   Send HTTP Request with invalid /eventlistener/v5/ instead of /eventListener/v5 path
+    ${resp}=  Publish Event To VES Collector  ${VESC_URL_HTTPS}  /eventlistener/v5  ${headers}  ${evtdata}  ${VESC_HTTPS_USER}  ${VESC_HTTPS_PD}
+    Log    Receive HTTP Status code ${resp.status_code}
+    Should Be Equal As Strings         ${resp.status_code}     404
+    
+
+    
+
+   
+
+       
+    
+    
+    
+
+    
+        
+    
+  
+    
+  
+
+
index 650f8fe..0242ad7 100644 (file)
@@ -5,14 +5,14 @@ Created on Aug 18, 2017
 '''\r
 from robot.api import logger\r
 from Queue import Queue\r
-import uuid, time, datetime,json, threading\r
+import uuid, time, datetime,json, threading,os, platform, subprocess,paramiko\r
 import DcaeVariables\r
 import DMaaP\r
 \r
 class DcaeLibrary(object):\r
     \r
     def __init__(self):\r
-        pass\r
+        pass \r
     \r
     def setup_dmaap_server(self, portNum=3904):\r
         if DcaeVariables.HttpServerThread != None:\r
@@ -50,6 +50,28 @@ class DcaeLibrary(object):
             return "true"\r
         logger.console("DMaaP server not started yet")\r
         return "false"\r
+    \r
+    def enable_vesc_https_auth(self):\r
+        if 'Windows' in platform.system():\r
+            try:\r
+                client = paramiko.SSHClient()\r
+                client.load_system_host_keys()\r
+                #client.set_missing_host_key_policy(paramiko.WarningPolicy)\r
+                client.set_missing_host_key_policy(paramiko.AutoAddPolicy())\r
+                \r
+                client.connect(os.environ['CSIT_IP'], port=22, username=os.environ['CSIT_USER'], password=os.environ['CSIT_PD'])\r
+                stdin, stdout, stderr = client.exec_command('%{WORKSPACE}/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh')\r
+                logger.console(stdout.read())    \r
+            finally:\r
+                client.close()\r
+            return\r
+        ws = os.environ['WORKSPACE']\r
+        script2run = ws + "/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh"\r
+        logger.info("Running script: " + script2run)\r
+        logger.console("Running script: " + script2run)\r
+        subprocess.call(script2run)\r
+        time.sleep(5)\r
+        return  \r
                    \r
     def dmaap_message_receive(self, evtobj, action='contain'):\r
         \r
@@ -129,7 +151,9 @@ if __name__ == '__main__':
     '''\r
     \r
     lib = DcaeLibrary()\r
+    lib.enable_vesc_https_auth()\r
+    \r
     ret = lib.setup_dmaap_server()\r
     print ret\r
-    time.sleep(10000000000)\r
-    
\ No newline at end of file
+    time.sleep(100000)\r
+    \r
diff --git a/test/csit/tests/dcaegen2/testcases/resources/collector.properties b/test/csit/tests/dcaegen2/testcases/resources/collector.properties
new file mode 100755 (executable)
index 0000000..1c5c841
--- /dev/null
@@ -0,0 +1,74 @@
+###############################################################################
+##
+## Collector Server config
+##
+##     - Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP(S) service
+##
+##     Normally:
+##
+##             - 8080 is http service
+##             - https is disabled by default (-1)
+##
+##             - At this time, the server always binds to 0.0.0.0
+##
+## The default port when header.authflag is disabled (0)
+#collector.service.port=8080
+
+## The secure port is required if header.authflag is set to 1 (true)
+## Authentication is only supported via secure port
+## When enabled - require valid keystore defined
+collector.service.secure.port=8443
+
+## The keystore must be setup per installation when secure port is configured
+collector.keystore.file.location=../etc/keystore
+collector.keystore.passwordfile=./etc/passwordfile
+collector.keystore.alias=tomcat
+
+
+###############################################################################
+## Processing
+##
+## If there's a problem that prevents the collector from processing alarms,
+## it's normally better to apply back pressure to the caller than to try to
+## buffer beyond a reasonable size limit. With a limit, the server won't crash
+## due to being out of memory, and the caller will get a 5xx reply saying the
+## server is in trouble.
+collector.inputQueue.maxPending=8096
+
+## Schema Validation checkflag
+## default no validation checkflag (-1)
+## If enabled (1) - schemafile location must be specified
+collector.schema.checkflag=1
+collector.schema.file={\"v1\":\"./etc/CommonEventFormat_27.2.json\",\"v2\":\"./etc/CommonEventFormat_27.2.json\",\"v3\":\"./etc/CommonEventFormat_27.2.json\",\"v4\":\"./etc/CommonEventFormat_27.2.json\",\"v5\":\"./etc/CommonEventFormat_28.3.json\"}
+
+## List all streamid per domain to be supported. The streamid should match to channel name on dmaapfile  
+collector.dmaap.streamid=fault=sec_fault|syslog=sec_syslog|heartbeat=sec_heartbeat|measurementsForVfScaling=sec_measurement|mobileFlow=sec_mobileflow|other=sec_other|stateChange=sec_statechange|thresholdCrossingAlert=sec_thresholdCrossingAlert|voiceQuality=ves_voicequality|sipSignaling=ves_sipsignaling
+collector.dmaapfile=./etc/DmaapConfig.json
+
+## Custom ExceptionConfiguration
+exceptionConfig=./etc/ExceptionConfig.json
+
+## authflag control authentication by the collector
+## If enabled (1) - then authlist has to be defined
+## When authflag is enabled, only secure port will be supported
+## To disable enter 0
+header.authflag=1
+## Combination of userid,base64 encoded pwd list to be supported
+## userid and pwd comma separated; pipe delimitation between each pair
+header.authlist=sample1,c2FtcGxlMQ==|vdnsagg,dmRuc2FnZw==
+
+## Event transformation Flag - when set expects configurable transformation
+## defined under ./etc/eventTransform.json
+## Enabled by default; to disable set to 0
+event.transform.flag=0
+
+###############################################################################
+##
+## Tomcat control
+##
+#tomcat.maxthreads=(tomcat default, which is usually 200)
+
index a30a1ba..59d44e1 100644 (file)
@@ -1,16 +1,13 @@
  *** Settings ***\r
 Documentation     The main interface for interacting with DCAE. It handles low level stuff like managing the http request library and DCAE required fields\r
 Library              RequestsLibrary\r
-Library                  DcaeLibrary.py   \r
+Library                  DcaeLibrary   \r
 Library           OperatingSystem\r
 Library           Collections\r
 Variables         ../resources/DcaeVariables.py\r
 Resource          ../resources/dcae_properties.robot\r
-\r
-\r
 *** Variables ***\r
 ${DCAE_HEALTH_CHECK_BODY}    %{WORKSPACE}/test/csit/tests/dcae/testcases/assets/json_events/dcae_healthcheck.json\r
-\r
 *** Keywords ***\r
 Get DCAE Nodes\r
     [Documentation]    Get DCAE Nodes from Consul Catalog\r
@@ -26,8 +23,6 @@ Get DCAE Nodes
     ${len}=  Get Length   ${NodeList}   \r
     Should Not Be Equal As Integers   ${len}   0\r
     [return]    ${NodeList}\r
-\r
-\r
 DCAE Node Health Check\r
     [Documentation]    Perform DCAE Node Health Check\r
     [Arguments]    ${NodeName}\r
@@ -43,76 +38,58 @@ DCAE Node Health Check
     Should Not Be Equal As Integers   ${len}   0\r
     DCAE Check Health Status    ${NodeName}   ${StatusList[0]}    Serf Health Status\r
     #Run Keyword if  ${len} > 1  DCAE Check Health Status  ${NodeName}  ${StatusList[1]}  Serf Health Status\r
-    \r
-    \r
 DCAE Check Health Status\r
     [Arguments]    ${NodeName}    ${ItemStatus}   ${CheckType}\r
     Should Be Equal As Strings    ${ItemStatus}    passing   \r
     Log   Node: ${NodeName} ${CheckType} check pass ok\r
-    \r
 VES Collector Suite Setup DMaaP\r
     [Documentation]   Start DMaaP Mockup Server\r
     ${ret}=  Setup DMaaP Server\r
     Should Be Equal As Strings     ${ret}    true\r
-    \r
 VES Collector Suite Shutdown DMaaP\r
     [Documentation]   Shutdown DMaaP Mockup Server\r
     ${ret}=  Shutdown DMaap\r
     Should Be Equal As Strings     ${ret}    true\r
-\r
-    \r
-\r
-    \r
 Check DCAE Results\r
     [Documentation]    Parse DCAE JSON response and make sure all rows have healthTestStatus=GREEN\r
     [Arguments]    ${json}\r
     @{rows}=    Get From Dictionary    ${json['returns']}    rows\r
     @{headers}=    Get From Dictionary    ${json['returns']}    columns\r
-    \r
     # Retrieve column names from headers\r
     ${columns}=    Create List\r
     :for    ${header}    in    @{headers}\r
-    \    ${colName}=    Get From Dictionary    ${header}    colName \r
+    \    ${colName}=    Get From Dictionary    ${header}    colName\r
     \    Append To List    ${columns}    ${colName}\r
-    \r
-    # Process each row making sure status=GREEN          \r
+    # Process each row making sure status=GREEN\r
     :for    ${row}    in    @{rows}\r
     \    ${cells}=    Get From Dictionary    ${row}    cells\r
-    \    ${dict}=    Make A Dictionary    ${cells}    ${columns} \r
+    \    ${dict}=    Make A Dictionary    ${cells}    ${columns}\r
     \    Dictionary Should Contain Item    ${dict}    healthTestStatus    GREEN\r
-\r
-        \r
 Make A Dictionary\r
     [Documentation]    Given a list of column names and a list of dictionaries, map columname=value\r
     [Arguments]     ${columns}    ${names}    ${valuename}=value\r
     ${dict}=    Create Dictionary\r
-    ${collength}=    Get Length    ${columns} \r
-    ${namelength}=    Get Length    ${names} \r
+    ${collength}=    Get Length    ${columns}\r
+    ${namelength}=    Get Length    ${names}\r
     :for    ${index}    in range    0   ${collength}\r
     \    ${name}=    Evaluate     ${names}[${index}]\r
     \    ${valued}=    Evaluate     ${columns}[${index}]\r
     \    ${value}=    Get From Dictionary    ${valued}    ${valueName}\r
     \    Set To Dictionary    ${dict}   ${name}    ${value}     \r
     [Return]     ${dict}\r
-    \r
-\r
 Get Event Data From File\r
     [Arguments]    ${jsonfile}\r
     ${data}=    OperatingSystem.Get File    ${jsonfile}\r
     #Should Not Be_Equal    ${data}    None\r
     [return]    ${data}\r
-\r
 Json String To Dictionary\r
     [Arguments]  ${json_string}   \r
     ${json_dict}=  evaluate    json.loads('''${json_string}''')    json\r
     [return]   ${json_dict}\r
-\r
 Dictionary To Json String\r
     [Arguments]  ${json_dict}\r
     ${json_string}=    evaluate    json.dumps(${json_dict})    json\r
     [return]    ${json_string}\r
-\r
-\r
 Get DCAE Service Component Status\r
     [Documentation]   Get the status of a DCAE Service Component\r
     [Arguments]    ${url}    ${urlpath}     ${usr}    ${passwd}    \r
@@ -120,26 +97,23 @@ Get DCAE Service Component Status
     ${session}=    Create Session      dcae-service-component  ${url}    auth=${auth}\r
     ${resp}=   Get Request     dcae-service-component  ${urlpath}\r
     [return]    ${resp}\r
-    \r
 Publish Event To VES Collector No Auth\r
     [Documentation]    Send an event to VES Collector\r
     [Arguments]     ${url}  ${evtpath}   ${httpheaders}    ${evtdata}\r
     Log    Creating session ${url}\r
-    ${session}=    Create Session      dcae-d1         ${url}\r
-    ${resp}=   Post Request    dcae-d1         ${evtpath}     data=${evtdata}   headers=${httpheaders}\r
+    ${session}=    Create Session      dcaegen2-d1     ${url}\r
+    ${resp}=   Post Request    dcaegen2-d1     ${evtpath}     data=${evtdata}   headers=${httpheaders}\r
     #Log    Received response from dcae ${resp.json()}\r
     [return]   ${resp}\r
-\r
 Publish Event To VES Collector\r
     [Documentation]    Send an event to VES Collector\r
     [Arguments]     ${url}  ${evtpath}   ${httpheaders}    ${evtdata}   ${user}  ${pd}\r
     ${auth}=  Create List  ${user}   ${pd}\r
     Log    Creating session ${url}\r
-    ${session}=    Create Session      dcae-d1         ${url}    auth=${auth}\r
-    ${resp}=   Post Request    dcae-d1         ${evtpath}     data=${evtdata}   headers=${httpheaders}\r
+    ${session}=    Create Session      dcaegen2-d1     ${url}    auth=${auth}   disable_warnings=1\r
+    ${resp}=   Post Request    dcaegen2-d1     ${evtpath}     data=${evtdata}   headers=${httpheaders}\r
     #Log    Received response from dcae ${resp.json()}\r
     [return]   ${resp}\r
-    \r
 Publish Event To VES Collector With Put Method\r
     [Documentation]    Send an event to VES Collector\r
     [Arguments]     ${url}  ${evtpath}   ${httpheaders}    ${evtdata}   ${user}  ${pd}\r
@@ -149,7 +123,6 @@ Publish Event To VES Collector With Put Method
     ${resp}=   Put Request     dcae-d1         ${evtpath}     data=${evtdata}   headers=${httpheaders}\r
     #Log    Received response from dcae ${resp.json()}\r
     [return]   ${resp}\r
-\r
 Publish Event To VES Collector With Put Method No Auth\r
     [Documentation]    Send an event to VES Collector\r
     [Arguments]     ${url}  ${evtpath}   ${httpheaders}    ${evtdata}\r
@@ -158,4 +131,3 @@ Publish Event To VES Collector With Put Method No Auth
     ${resp}=   Put Request     dcae-d1         ${evtpath}     data=${evtdata}   headers=${httpheaders}\r
     #Log    Received response from dcae ${resp.json()}\r
     [return]   ${resp}\r
-            
\ No newline at end of file
index be182d4..be072d7 100644 (file)
@@ -5,9 +5,11 @@ Documentation        store all properties that can change or are used in multipl
 \r
 \r
 *** Variables ***\r
-${GLOBAL_APPLICATION_ID}           robot-dcae\r
-${GLOBAL_DCAE_CONSUL_URL}         http://135.205.228.129:8500\r
-${GLOBAL_DCAE_CONSUL_URL1}          http://135.205.228.170:8500\r
+${GLOBAL_APPLICATION_ID}           robot-dcaegen2\r
+${GLOBAL_DCAE_CONSUL_URL}          http://135.205.228.129:8500\r
+${GLOBAL_DCAE_CONSUL_URL1}         http://135.205.228.170:8500\r
 ${GLOBAL_DCAE_VES_URL}             http://localhost:8443/eventlistener/v5\r
 ${GLOBAL_DCAE_USERNAME}            console\r
 ${GLOBAL_DCAE_PASSWORD}            ZjJkYjllMjljMTI2M2Iz\r
+${VESC_HTTPS_USER}                 sample1\r
+${VESC_HTTPS_PD}                   sample1\r
diff --git a/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh b/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh
new file mode 100755 (executable)
index 0000000..1298991
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+#
+# Copyright 2016-2017 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+docker exec -it vesc /opt/app/VESCollector/bin/VESrestfulCollector.sh stop
+sleep 2 
+docker cp ${WORKSPACE}/test/csit/tests/dcaegen2/testcases/resources/collector.properties vesc:/opt/app/VESCollector/etc
+sleep 10 
+docker exec -id vesc /opt/app/VESCollector/bin/VESrestfulCollector.sh start
+sleep 5
+echo "VES Collector Restarted"