aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bootstrap/vagrant-onap/lib/sdc28
-rwxr-xr-xtest/csit/plans/dcaegen2/testsuites/setup.sh3
-rw-r--r--test/csit/tests/clamp/APIs/01__TCA.robot2
-rw-r--r--test/csit/tests/clamp/APIs/02__Holmes.robot15
-rw-r--r--test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot75
-rw-r--r--test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot50
-rw-r--r--test/csit/tests/dcaegen2/testcases/dcae_ves.robot387
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py32
-rwxr-xr-xtest/csit/tests/dcaegen2/testcases/resources/collector.properties74
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot48
-rw-r--r--test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot8
-rwxr-xr-xtest/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh23
-rw-r--r--test/csit/tests/so/sanity-check/data/activateService.json23
-rw-r--r--test/csit/tests/so/sanity-check/data/createNetwork.json35
-rw-r--r--test/csit/tests/so/sanity-check/data/createVF.json59
-rw-r--r--test/csit/tests/so/sanity-check/data/createVG.json47
-rw-r--r--test/csit/tests/so/sanity-check/data/deactivateService.json23
-rw-r--r--test/csit/tests/so/sanity-check/data/deleteNetwork.json15
-rw-r--r--test/csit/tests/so/sanity-check/data/deleteVF.json17
-rw-r--r--test/csit/tests/so/sanity-check/data/deleteVG.json15
-rw-r--r--test/csit/tests/so/sanity-check/data/replaceVF.json60
-rw-r--r--test/csit/tests/so/sanity-check/data/replaceVnf.json36
-rw-r--r--test/csit/tests/so/sanity-check/data/updateNetwork.json34
-rw-r--r--test/csit/tests/so/sanity-check/data/updateVF.json61
-rw-r--r--test/csit/tests/so/sanity-check/data/updateVnf.json39
-rw-r--r--test/csit/tests/so/sanity-check/sanity_test_so.robot103
26 files changed, 1063 insertions, 249 deletions
diff --git a/bootstrap/vagrant-onap/lib/sdc b/bootstrap/vagrant-onap/lib/sdc
index 9ec04b21b..058048960 100644
--- a/bootstrap/vagrant-onap/lib/sdc
+++ b/bootstrap/vagrant-onap/lib/sdc
@@ -40,7 +40,7 @@ function _setup_docker_aliases {
cat <<EOL > /root/.bash_aliases
alias dcls='/data/scripts/docker_clean.sh \$1'
alias dlog='/data/scripts/docker_login.sh \$1'
-alias rund='/data/scripts/docker_run.sh'
+alias drun='/data/scripts/docker_run.sh'
alias health='/data/scripts/docker_health.sh'
EOL
}
@@ -66,14 +66,16 @@ function compile_all_sdc_repos {
# get_sdc_images() - Function that retrieves the SDC docker images
function get_sdc_images {
if [[ "$build_image" == "True" ]]; then
- if [[ "$compile_repo" != "True" ]]; then
+ if [[ "$compile_repo" == "True" ]]; then
compile_src $sdc_src_folder
fi
build_docker_image $sdc_src_folder/sdc-docker-base
else
- for image in backend frontend elasticsearch kibana cassandra sanity; do
- pull_openecomp_image openecomp/sdc-$image
- done
+ if [["$pull_docker_image" == True]]; then
+ for image in backend frontend elasticsearch kibana cassandra sanity; do
+ pull_openecomp_image openecomp/sdc-$image
+ done
+ fi
fi
}
@@ -83,12 +85,16 @@ function install_sdc {
local MR_IP_ADDR='10.0.11.1'
_init_data_folders
- cp $sdc_src_folder/sdc-os-chef/environments/Template.json /data/environments
- cp $sdc_src_folder/sdc-os-chef/scripts/docker_run.sh /data/scripts
- cp $sdc_src_folder/sdc-os-chef/scripts/docker_health.sh /data/scripts
- chmod +x /data/scripts/docker_run.sh
- chmod +x /data/scripts/docker_health.sh
-
+ cp $sdc_src_folder/sdc-os-chef/environments/Template.json /data/environments
+ cp $sdc_src_folder/sdc-os-chef/scripts/docker_run.sh /data/scripts
+ cp $sdc_src_folder/sdc-os-chef/scripts/docker_health.sh /data/scripts
+ cp $sdc_src_folder/sdc-os-chef/scripts/docker_login.sh /data/scripts
+ cp $sdc_src_folder/sdc-os-chef/scripts/docker_clean.sh /data/scripts
+ chmod +x /data/scripts/docker_run.sh
+ chmod +x /data/scripts/docker_health.sh
+ chmod +x /data/scripts/docker_login.sh
+ chmod +x /data/scripts/docker_clean.sh
+
cat /data/environments/Template.json | sed "s/yyy/"$IP_ADDRESS"/g" > /data/environments/$ENV_NAME.json
sed -i "s/xxx/"$ENV_NAME"/g" /data/environments/$ENV_NAME.json
sed -i "s/\"ueb_url_list\":.*/\"ueb_url_list\": \""$MR_IP_ADDR","$MR_IP_ADDR"\",/g" /data/environments/$ENV_NAME.json
diff --git a/test/csit/plans/dcaegen2/testsuites/setup.sh b/test/csit/plans/dcaegen2/testsuites/setup.sh
index 3068b5026..6692bb209 100755
--- a/test/csit/plans/dcaegen2/testsuites/setup.sh
+++ b/test/csit/plans/dcaegen2/testsuites/setup.sh
@@ -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
diff --git a/test/csit/tests/clamp/APIs/01__TCA.robot b/test/csit/tests/clamp/APIs/01__TCA.robot
index e4837a66a..c0b268bf1 100644
--- a/test/csit/tests/clamp/APIs/01__TCA.robot
+++ b/test/csit/tests/clamp/APIs/01__TCA.robot
@@ -52,7 +52,7 @@ Put Requests to add Close Loop TCA Model2
${resp}= Put Request clamp /restservices/clds/v1/clds/model/TCAModel2 data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 200
-Get Requests verify Model1 and Model2 found
+Get Requests verify TCA Model1 and Model2 found
${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
Create Session clamp http://localhost:8080 auth=${auth}
${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
diff --git a/test/csit/tests/clamp/APIs/02__Holmes.robot b/test/csit/tests/clamp/APIs/02__Holmes.robot
index 9087c4bcd..313b7a4d2 100644
--- a/test/csit/tests/clamp/APIs/02__Holmes.robot
+++ b/test/csit/tests/clamp/APIs/02__Holmes.robot
@@ -36,3 +36,18 @@ Get Requests verify Holmes template1 and template2 found
Should Contain Match ${resp} *HolmesTemplate2*
Should Not Contain Match ${resp} *HolmesTemplate99*
+Put Requests to add Close Loop Holmes Model1
+ ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ Create Session clamp http://localhost:8080 auth=${auth}
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createHolmesModel1.json
+ &{headers}= Create Dictionary Content-Type=application/json
+ ${resp}= Put Request clamp /restservices/clds/v1/clds/model/HolmesModel1 data=${data} headers=${headers}
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Get Requests verify Holmes Model1 found
+ ${auth}= Create List admin 5f4dcc3b5aa765d61d8327deb882cf99
+ Create Session clamp http://localhost:8080 auth=${auth}
+ ${resp}= Get Request clamp /restservices/clds/v1/clds/model-names
+ Should Be Equal As Strings ${resp.status_code} 200
+ Should Contain Match ${resp} *HolmesModel1*
+ Should Not Contain Match ${resp} *HolmesModel99*
diff --git a/test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot b/test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot
new file mode 100644
index 000000000..4d038caeb
--- /dev/null
+++ b/test/csit/tests/clamp/UIs/03__Create_Holmes_template.robot
@@ -0,0 +1,75 @@
+*** Settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library Selenium2Library
+Library XvfbRobot
+
+
+*** Test Cases ***
+Get Requests health check ok
+ CreateSession clamp http://localhost:8080
+ ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Open Browser
+# Next line is to be enabled for Headless tests only (jenkins?). To see the tests desable the line.
+ Start Virtual Display 1920 1080
+ Open Browser http://localhost:8080/designer/index.html browser=firefox
+ Set Selenium Speed .2 seconds
+ Set Window Size 1920 1080
+ ${title}= Get Title
+ Should Be Equal CLDS ${title}
+
+Good Login to Clamp UI and Verify logged in
+ Input Text locator=username text=admin
+ Input Text locator=password text=password
+ Press Key locator=password key=\\13
+ Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60
+ Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin
+
+Create Template from Menu
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[1]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[1]/a
+ Wait Until Element Is Visible locator=Create Template timeout=60
+ Click Element locator=Create Template
+ Input Text locator=modelName text=HolmesTemplate
+ Click Button locator=OK
+
+Drag and Drop Boxes for template
+ Wait Until Element Is Visible xpath=//*[@class="entry icon-collector-node"] timeout=60
+ Drag And Drop By Offset xpath=//*[@class="entry icon-collector-node"] 280 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-stringmatch-node"] 480 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-ves-collector-node"] 680 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-holmes-node"] 880 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-tca-node"] 1080 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-policy-node"] 1280 280
+ Drag And Drop By Offset xpath=//*[@class="entry icon-end-event-none"] 1480 280
+
+Drag and Drop Connectors for template
+ Click Element xpath=//*[starts-with(@data-element-id, "StartEvent_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[8]/div/div/div[2]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[8]/div/div/div[2]/div xpath=//*[starts-with(@data-element-id, "Collector_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[1]/div/div/div[3]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[1]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "StringMatch_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[2]/div/div/div[3]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[2]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "VesCollector_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[3]/div/div/div[2]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[3]/div/div/div[2]/div xpath=//*[starts-with(@data-element-id, "Holmes_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[4]/div/div/div[3]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[4]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "TCA_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[5]/div/div/div[3]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[5]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "Policy_")]
+ Wait Until Element Is Enabled xpath=//*[@id="js-canvas"]/div/div/div[2]/div[6]/div/div/div[3]/div
+ Drag And Drop xpath=//*[@id="js-canvas"]/div/div/div[2]/div[6]/div/div/div[3]/div xpath=//*[starts-with(@data-element-id, "EndEvent_")]
+
+Save Template from Menu
+ Click Element xpath=//*[@id="navbar"]/ul/li[1]/a
+ Wait Until Element Is Visible locator=Save Template timeout=60
+ Click Element locator=Save Template
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE
+
+Close Browser
+ Close Browser \ No newline at end of file
diff --git a/test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot b/test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot
new file mode 100644
index 000000000..a531645a1
--- /dev/null
+++ b/test/csit/tests/clamp/UIs/04__Create_Holmes_model.robot
@@ -0,0 +1,50 @@
+*** Settings ***
+Library Collections
+Library RequestsLibrary
+Library OperatingSystem
+Library json
+Library Selenium2Library
+Library XvfbRobot
+
+
+*** Test Cases ***
+Get Requests health check ok
+ CreateSession clamp http://localhost:8080
+ ${resp}= Get Request clamp /restservices/clds/v1/clds/healthcheck
+ Should Be Equal As Strings ${resp.status_code} 200
+
+Open Browser
+# Next line is to be enabled for Headless tests only (jenkins?). To see the tests desable the line.
+ Start Virtual Display 1920 1080
+ Open Browser http://localhost:8080/designer/index.html browser=firefox
+ Set Selenium Speed .2 seconds
+ Set Window Size 1920 1080
+ ${title}= Get Title
+ Should Be Equal CLDS ${title}
+
+Good Login to Clamp UI and Verify logged in
+ Input Text locator=username text=admin
+ Input Text locator=password text=password
+ Press Key locator=password key=\\13
+ Wait Until Element Is Visible xpath=//*[@class="navbar-brand logo_name ng-binding"] timeout=60
+ Element Text Should Be xpath=//*[@class="navbar-brand logo_name ng-binding"] expected=Hello:admin
+
+Create Model from Menu
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Create CL timeout=60
+ Click Element locator=Create CL
+ Input Text locator=modelName text=HolmesModel
+ Select From List By Label id=templateName HolmesTemplate
+ Click Button locator=Create
+
+Save Model from Menu
+ Wait Until Element Is Visible xpath=//*[@id="navbar"]/ul/li[2]/a timeout=60
+ Click Element xpath=//*[@id="navbar"]/ul/li[2]/a
+ Wait Until Element Is Visible locator=Save CL timeout=60
+ Click Element locator=Save CL
+ Wait Until Element Is Visible xpath=//*[@id="alert_message_"] timeout=60
+ Element Text Should Be xpath=//*[@id="alert_message_"] expected=Action Successful:SAVE
+
+Close Browser
+ Close Browser
diff --git a/test/csit/tests/dcaegen2/testcases/dcae_ves.robot b/test/csit/tests/dcaegen2/testcases/dcae_ves.robot
index 00c58071b..eee6ea569 100644
--- a/test/csit/tests/dcaegen2/testcases/dcae_ves.robot
+++ b/test/csit/tests/dcaegen2/testcases/dcae_ves.robot
@@ -1,188 +1,199 @@
-*** 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
-
-*** Comment out from R1 release ***
-DCAE Health Check
- [Tags] DCAE-HealthCheck
- [Documentation] Get DCAE Overall Status
- ${auth}= Create List ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- ${session}= Create Session dcae-health-check ${CONFIG_BINDING_URL} auth=${auth}
- ${resp}= Get Request dcae-health-check ${CB_HEALTHCHECK_PATH}
- Should Be Equal As Strings ${resp.status_code} 200
-
-
-Get VES Collector Service Status
- [Tags] DCAE-HealthCheck
- [Documentation] Get the status of a VES Collector Service Component based on service name
- ${urlpath}= Catenate SEPARATOR= ${CB_SERVICE_COMPONENT_PATH} ${VES_Service_Name1}
- Log Service component name for status query: ${urlpath}
- ${resp}= Get DCAE Service Component Status ${CONFIG_BINDING_URL} ${CB_SERVICE_COMPONENT_PATH} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- 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()}
-
-
-
-#*** Comment out from R1 release ***
-Publish VES VoLTE Fault Provide Throttling State
- [Tags] DCAE-D1
- ${evtdata}= Get Event Data From File ${EVENT_THROTTLING_STATE_DATA_FILE}
- ${headers}= Create Header From String ${HEADER_STRING}
- ${resp}= Publish Event To VES Collector ${VES_VOLTE_URL} ${VES_THROTTLE_STATE_EVENT_PATH} ${headers} ${evtdata} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Should Be Equal As Strings ${resp.status_code} 204
-
-Publish VES Event With Invalid Method
- [Tags] DCAE-D1
- [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 ${VES_VOLTE_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Log Receive HTTP Status code ${resp.status_code}
- Should Be Equal As Strings ${resp.status_code} 405
-
-
-Publish VES Event With Invalid URL Path
- [Tags] DCAE-D1
- [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 ${VES_VOLTE_URL} /listener/v5/ ${headers} ${evtdata} ${GLOBAL_DCAE_USERNAME} ${GLOBAL_DCAE_PASSWORD}
- Log Receive HTTP Status code ${resp.status_code}
- Should Be Equal As Strings ${resp.status_code} 404
-
-Publish VES Event With Invalid Login
- [Tags] DCAE-D1
- [Documentation] Use invalid user or password to expect 401 response
- ${evtdata}= Get Event Data From File ${EVENT_DATA_FILE}
- ${headers}= Create Header From String ${HEADER_STRING}
- Log Send HTTP Request with invalid User: BadUserName
- ${resp}= Publish Event To VES Collector ${VES_VOLTE_URL} ${VES_ANY_EVENT_PATH} ${headers} ${evtdata} BadUserName ${GLOBAL_DCAE_PASSWORD}
- Log Receive HTTP Status code ${resp.status_code}
- Should Be Equal As Strings ${resp.status_code} 401
-
-*** 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
-
-
-
-
-
-
-
-
-
-
+*** 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py b/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
index 650f8fef8..0242ad7ab 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
+++ b/test/csit/tests/dcaegen2/testcases/resources/DcaeLibrary.py
@@ -5,14 +5,14 @@ Created on Aug 18, 2017
'''
from robot.api import logger
from Queue import Queue
-import uuid, time, datetime,json, threading
+import uuid, time, datetime,json, threading,os, platform, subprocess,paramiko
import DcaeVariables
import DMaaP
class DcaeLibrary(object):
def __init__(self):
- pass
+ pass
def setup_dmaap_server(self, portNum=3904):
if DcaeVariables.HttpServerThread != None:
@@ -50,6 +50,28 @@ class DcaeLibrary(object):
return "true"
logger.console("DMaaP server not started yet")
return "false"
+
+ def enable_vesc_https_auth(self):
+ if 'Windows' in platform.system():
+ try:
+ client = paramiko.SSHClient()
+ client.load_system_host_keys()
+ #client.set_missing_host_key_policy(paramiko.WarningPolicy)
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+
+ client.connect(os.environ['CSIT_IP'], port=22, username=os.environ['CSIT_USER'], password=os.environ['CSIT_PD'])
+ stdin, stdout, stderr = client.exec_command('%{WORKSPACE}/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh')
+ logger.console(stdout.read())
+ finally:
+ client.close()
+ return
+ ws = os.environ['WORKSPACE']
+ script2run = ws + "/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh"
+ logger.info("Running script: " + script2run)
+ logger.console("Running script: " + script2run)
+ subprocess.call(script2run)
+ time.sleep(5)
+ return
def dmaap_message_receive(self, evtobj, action='contain'):
@@ -129,7 +151,9 @@ if __name__ == '__main__':
'''
lib = DcaeLibrary()
+ lib.enable_vesc_https_auth()
+
ret = lib.setup_dmaap_server()
print ret
- time.sleep(10000000000)
- \ No newline at end of file
+ time.sleep(100000)
+
diff --git a/test/csit/tests/dcaegen2/testcases/resources/collector.properties b/test/csit/tests/dcaegen2/testcases/resources/collector.properties
new file mode 100755
index 000000000..1c5c8411e
--- /dev/null
+++ b/test/csit/tests/dcaegen2/testcases/resources/collector.properties
@@ -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)
+
diff --git a/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot b/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
index a30a1ba01..59d44e158 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
+++ b/test/csit/tests/dcaegen2/testcases/resources/dcae_keywords.robot
@@ -1,16 +1,13 @@
*** Settings ***
Documentation The main interface for interacting with DCAE. It handles low level stuff like managing the http request library and DCAE required fields
Library RequestsLibrary
-Library DcaeLibrary.py
+Library DcaeLibrary
Library OperatingSystem
Library Collections
Variables ../resources/DcaeVariables.py
Resource ../resources/dcae_properties.robot
-
-
*** Variables ***
${DCAE_HEALTH_CHECK_BODY} %{WORKSPACE}/test/csit/tests/dcae/testcases/assets/json_events/dcae_healthcheck.json
-
*** Keywords ***
Get DCAE Nodes
[Documentation] Get DCAE Nodes from Consul Catalog
@@ -26,8 +23,6 @@ Get DCAE Nodes
${len}= Get Length ${NodeList}
Should Not Be Equal As Integers ${len} 0
[return] ${NodeList}
-
-
DCAE Node Health Check
[Documentation] Perform DCAE Node Health Check
[Arguments] ${NodeName}
@@ -43,76 +38,58 @@ DCAE Node Health Check
Should Not Be Equal As Integers ${len} 0
DCAE Check Health Status ${NodeName} ${StatusList[0]} Serf Health Status
#Run Keyword if ${len} > 1 DCAE Check Health Status ${NodeName} ${StatusList[1]} Serf Health Status
-
-
DCAE Check Health Status
[Arguments] ${NodeName} ${ItemStatus} ${CheckType}
Should Be Equal As Strings ${ItemStatus} passing
Log Node: ${NodeName} ${CheckType} check pass ok
-
VES Collector Suite Setup DMaaP
[Documentation] Start DMaaP Mockup Server
${ret}= Setup DMaaP Server
Should Be Equal As Strings ${ret} true
-
VES Collector Suite Shutdown DMaaP
[Documentation] Shutdown DMaaP Mockup Server
${ret}= Shutdown DMaap
Should Be Equal As Strings ${ret} true
-
-
-
-
Check DCAE Results
[Documentation] Parse DCAE JSON response and make sure all rows have healthTestStatus=GREEN
[Arguments] ${json}
@{rows}= Get From Dictionary ${json['returns']} rows
@{headers}= Get From Dictionary ${json['returns']} columns
-
# Retrieve column names from headers
${columns}= Create List
:for ${header} in @{headers}
- \ ${colName}= Get From Dictionary ${header} colName
+ \ ${colName}= Get From Dictionary ${header} colName
\ Append To List ${columns} ${colName}
-
- # Process each row making sure status=GREEN
+ # Process each row making sure status=GREEN
:for ${row} in @{rows}
\ ${cells}= Get From Dictionary ${row} cells
- \ ${dict}= Make A Dictionary ${cells} ${columns}
+ \ ${dict}= Make A Dictionary ${cells} ${columns}
\ Dictionary Should Contain Item ${dict} healthTestStatus GREEN
-
-
Make A Dictionary
[Documentation] Given a list of column names and a list of dictionaries, map columname=value
[Arguments] ${columns} ${names} ${valuename}=value
${dict}= Create Dictionary
- ${collength}= Get Length ${columns}
- ${namelength}= Get Length ${names}
+ ${collength}= Get Length ${columns}
+ ${namelength}= Get Length ${names}
:for ${index} in range 0 ${collength}
\ ${name}= Evaluate ${names}[${index}]
\ ${valued}= Evaluate ${columns}[${index}]
\ ${value}= Get From Dictionary ${valued} ${valueName}
\ Set To Dictionary ${dict} ${name} ${value}
[Return] ${dict}
-
-
Get Event Data From File
[Arguments] ${jsonfile}
${data}= OperatingSystem.Get File ${jsonfile}
#Should Not Be_Equal ${data} None
[return] ${data}
-
Json String To Dictionary
[Arguments] ${json_string}
${json_dict}= evaluate json.loads('''${json_string}''') json
[return] ${json_dict}
-
Dictionary To Json String
[Arguments] ${json_dict}
${json_string}= evaluate json.dumps(${json_dict}) json
[return] ${json_string}
-
-
Get DCAE Service Component Status
[Documentation] Get the status of a DCAE Service Component
[Arguments] ${url} ${urlpath} ${usr} ${passwd}
@@ -120,26 +97,23 @@ Get DCAE Service Component Status
${session}= Create Session dcae-service-component ${url} auth=${auth}
${resp}= Get Request dcae-service-component ${urlpath}
[return] ${resp}
-
Publish Event To VES Collector No Auth
[Documentation] Send an event to VES Collector
[Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata}
Log Creating session ${url}
- ${session}= Create Session dcae-d1 ${url}
- ${resp}= Post Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
+ ${session}= Create Session dcaegen2-d1 ${url}
+ ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
#Log Received response from dcae ${resp.json()}
[return] ${resp}
-
Publish Event To VES Collector
[Documentation] Send an event to VES Collector
[Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} ${user} ${pd}
${auth}= Create List ${user} ${pd}
Log Creating session ${url}
- ${session}= Create Session dcae-d1 ${url} auth=${auth}
- ${resp}= Post Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
+ ${session}= Create Session dcaegen2-d1 ${url} auth=${auth} disable_warnings=1
+ ${resp}= Post Request dcaegen2-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
#Log Received response from dcae ${resp.json()}
[return] ${resp}
-
Publish Event To VES Collector With Put Method
[Documentation] Send an event to VES Collector
[Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata} ${user} ${pd}
@@ -149,7 +123,6 @@ Publish Event To VES Collector With Put Method
${resp}= Put Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
#Log Received response from dcae ${resp.json()}
[return] ${resp}
-
Publish Event To VES Collector With Put Method No Auth
[Documentation] Send an event to VES Collector
[Arguments] ${url} ${evtpath} ${httpheaders} ${evtdata}
@@ -158,4 +131,3 @@ Publish Event To VES Collector With Put Method No Auth
${resp}= Put Request dcae-d1 ${evtpath} data=${evtdata} headers=${httpheaders}
#Log Received response from dcae ${resp.json()}
[return] ${resp}
- \ No newline at end of file
diff --git a/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot b/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
index be182d4aa..be072d73c 100644
--- a/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
+++ b/test/csit/tests/dcaegen2/testcases/resources/dcae_properties.robot
@@ -5,9 +5,11 @@ Documentation store all properties that can change or are used in multipl
*** Variables ***
-${GLOBAL_APPLICATION_ID} robot-dcae
-${GLOBAL_DCAE_CONSUL_URL} http://135.205.228.129:8500
-${GLOBAL_DCAE_CONSUL_URL1} http://135.205.228.170:8500
+${GLOBAL_APPLICATION_ID} robot-dcaegen2
+${GLOBAL_DCAE_CONSUL_URL} http://135.205.228.129:8500
+${GLOBAL_DCAE_CONSUL_URL1} http://135.205.228.170:8500
${GLOBAL_DCAE_VES_URL} http://localhost:8443/eventlistener/v5
${GLOBAL_DCAE_USERNAME} console
${GLOBAL_DCAE_PASSWORD} ZjJkYjllMjljMTI2M2Iz
+${VESC_HTTPS_USER} sample1
+${VESC_HTTPS_PD} sample1
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
index 000000000..12989911b
--- /dev/null
+++ b/test/csit/tests/dcaegen2/testcases/resources/vesc_enable_https_auth.sh
@@ -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"
diff --git a/test/csit/tests/so/sanity-check/data/activateService.json b/test/csit/tests/so/sanity-check/data/activateService.json
new file mode 100644
index 000000000..e2f749f78
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/activateService.json
@@ -0,0 +1,23 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "service",
+"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+"modelName": "Test",
+"modelVersion": "1.0"
+},
+"requestInfo": {
+"source": "VID",
+"requestorId": "az2016"
+},
+"requestParameters": {
+"userParams": [
+{
+"name": "aic_zone",
+"value": "someValue"
+}
+]
+}
+}
+}
diff --git a/test/csit/tests/so/sanity-check/data/createNetwork.json b/test/csit/tests/so/sanity-check/data/createNetwork.json
new file mode 100644
index 000000000..901e51747
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/createNetwork.json
@@ -0,0 +1,35 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelName": "CONTRAIL30_BASIC"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "8b1df54faa3b49078e3416e21370a3ba"
+ },
+ "requestInfo": {
+ "instanceName": "GN_EVPN_direct_net_0_ST_Subnets_Ipv4",
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "source": "VID",
+ "suppressRollback": true
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "{parent\tservice\tmodel\tname}",
+ "modelVersion": "1.0"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/createVF.json b/test/csit/tests/so/sanity-check/data/createVF.json
new file mode 100644
index 000000000..4969d5425
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/createVF.json
@@ -0,0 +1,59 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "vfModule",
+ "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12..base..module-0",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "instanceName": "MSOTEST103a-vSAMP12_base_module-0",
+ "source": "VID",
+ "suppressRollback": true
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
+ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+ "modelInfo": {
+ "modelType": "volumeGroup"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "{parent\tservice\tmodel\tname}",
+ "modelVersion": "1.0"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {vnfInstanceId} ",
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": " vSAMP12 ",
+ "modelVersion": "1.0",
+ "modelCustomizationName": "vSAMP12 1"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/createVG.json b/test/csit/tests/so/sanity-check/data/createVG.json
new file mode 100644
index 000000000..13bf3e996
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/createVG.json
@@ -0,0 +1,47 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "volumeGroup",
+ "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12..base..module-0",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+ "source": "VID",
+ "suppressRollback": true
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "{parent\tservice\tmodel\tname}",
+ "modelVersion": "1.0"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {vnfInstanceId} ",
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12",
+ "modelVersion": "1.0",
+ "modelCustomizationName": "vSAMP12 1"
+ }
+ }
+ }
+ ]
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/deactivateService.json b/test/csit/tests/so/sanity-check/data/deactivateService.json
new file mode 100644
index 000000000..e2f749f78
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/deactivateService.json
@@ -0,0 +1,23 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "service",
+"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+"modelName": "Test",
+"modelVersion": "1.0"
+},
+"requestInfo": {
+"source": "VID",
+"requestorId": "az2016"
+},
+"requestParameters": {
+"userParams": [
+{
+"name": "aic_zone",
+"value": "someValue"
+}
+]
+}
+}
+}
diff --git a/test/csit/tests/so/sanity-check/data/deleteNetwork.json b/test/csit/tests/so/sanity-check/data/deleteNetwork.json
new file mode 100644
index 000000000..4bee07800
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/deleteNetwork.json
@@ -0,0 +1,15 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelName": "CONTRAIL30_BASIC"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "8b1df54faa3b49078e3416e21370a3ba"
+ },
+ "requestInfo": {
+ "source": "VID"
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/deleteVF.json b/test/csit/tests/so/sanity-check/data/deleteVF.json
new file mode 100644
index 000000000..ac6023e81
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/deleteVF.json
@@ -0,0 +1,17 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "vfModule",
+ "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelName": "vSAMP12..base..module-0",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "source": "VID"
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/deleteVG.json b/test/csit/tests/so/sanity-check/data/deleteVG.json
new file mode 100644
index 000000000..cb238659c
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/deleteVG.json
@@ -0,0 +1,15 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "volumeGroup",
+ "modelName": "vSAMP12..base..module-0"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "source": "VID"
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/replaceVF.json b/test/csit/tests/so/sanity-check/data/replaceVF.json
new file mode 100644
index 000000000..231169960
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/replaceVF.json
@@ -0,0 +1,60 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "vfModule",
+ "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12..base..module-0",
+ "modelVersion": "2"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "source": "VID",
+ "suppressRollback": true,
+ "requestorId": "az2016"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
+ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+ "modelInfo": {
+ "modelType": "volumeGroup"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "{parent\tservice\tmodel\tname}",
+ "modelVersion": "2.0"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {vnfInstanceId} ",
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": " vSAMP12 ",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "vSAMP12 1",
+ "modelCustomizationId": "c539433a-84a6-4082-a12e-5c9b00c3b960"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/replaceVnf.json b/test/csit/tests/so/sanity-check/data/replaceVnf.json
new file mode 100644
index 000000000..18063750c
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/replaceVnf.json
@@ -0,0 +1,36 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12",
+ "modelVersion": "1.0",
+ "modelCustomizationName": "vSAMP12 1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "az2016"
+ },
+ "relatedInstanceList": [{
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": " {parent service model name} ",
+ "modelVersion": "2.0"
+ }
+ }
+ }],
+ "requestParameters": {
+ "rebuildVolumeGroups": false
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/updateNetwork.json b/test/csit/tests/so/sanity-check/data/updateNetwork.json
new file mode 100644
index 000000000..4d7639099
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/updateNetwork.json
@@ -0,0 +1,34 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "network",
+ "modelName": "CONTRAIL30_BASIC"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "8b1df54faa3b49078e3416e21370a3ba"
+ },
+ "requestInfo": {
+ "productFamilyId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "source": "VID",
+ "suppressRollback": true
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "{parent\tservice\tmodel\tname}",
+ "modelVersion": "1.0"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "userParams": []
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/updateVF.json b/test/csit/tests/so/sanity-check/data/updateVF.json
new file mode 100644
index 000000000..671cc7919
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/updateVF.json
@@ -0,0 +1,61 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "vfModule",
+ "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12..base..module-0",
+ "modelVersion": "1"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "source": "VID",
+ "suppressRollback": true,
+ "requestorId": "az2016"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
+ "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+ "modelInfo": {
+ "modelType": "volumeGroup"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "{parent\tservice\tmodel\tname}",
+ "modelVersion": "2.0"
+ }
+ }
+ },
+ {
+ "relatedInstance": {
+ "instanceId": " {vnfInstanceId} ",
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": " vSAMP12 ",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "vSAMP12 1",
+ "modelCustomizationId": "c539433a-84a6-4082-a12e-5c9b00c3b960"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "usePreload": true,
+ "userParams": []
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/data/updateVnf.json b/test/csit/tests/so/sanity-check/data/updateVnf.json
new file mode 100644
index 000000000..d6c39de90
--- /dev/null
+++ b/test/csit/tests/so/sanity-check/data/updateVnf.json
@@ -0,0 +1,39 @@
+{
+ "requestDetails": {
+ "modelInfo": {
+ "modelType": "vnf",
+ "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ "modelName": "vSAMP12",
+ "modelVersion": "2.0",
+ "modelCustomizationName": "vSAMP12 1",
+ "modelCustomizationId": "c539433a-84a6-4082-a12e-5c9b00c3b960"
+ },
+ "cloudConfiguration": {
+ "lcpCloudRegionId": "mdt1",
+ "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+ },
+ "requestInfo": {
+ "source": "VID",
+ "suppressRollback": false,
+ "requestorId": "az2016"
+ },
+ "relatedInstanceList": [
+ {
+ "relatedInstance": {
+ "instanceId": " {serviceInstanceId} ",
+ "modelInfo": {
+ "modelType": "service",
+ "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ "modelNameVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ "modelName": " {parent service model name} ",
+ "modelVersion": "1.0"
+ }
+ }
+ }
+ ],
+ "requestParameters": {
+ "usePreload": true
+ }
+ }
+}
diff --git a/test/csit/tests/so/sanity-check/sanity_test_so.robot b/test/csit/tests/so/sanity-check/sanity_test_so.robot
index 27a16fc38..065414569 100644
--- a/test/csit/tests/so/sanity-check/sanity_test_so.robot
+++ b/test/csit/tests/so/sanity-check/sanity_test_so.robot
@@ -36,7 +36,84 @@ Delete ServiceInstance for invalid user
&{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQxOnBhc3N3b3JkMTI== Content-Type=application/json Accept=application/json
${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000 data=${data} headers=${headers}
Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Activate ServiceInstance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}activateService.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v5/ff305d54-75b4-431b-adb2-eb6b9e5ff000/activate data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Deactivate ServiceInstance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deactivateService.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v5/ff305d54-75b4-431b-adb2-eb6b9e5ff000/deactivate data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Create Volume Group instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createVG.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e/volumeGroups data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Delete Volume Group instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deleteVG.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e/volumeGroups/ff305d54-75b4-ff1b-cdb2-eb6b9e5460ff data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+Create VF Module instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createVF.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e/vfModules data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Update VF Module instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}updateVF.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v5/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e/vfModules/ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Delete VF Module instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deleteVF.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e/vfModules/ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Replace VF Module instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}replaceVF.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v5/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e/vfModules/ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff/replace data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Create Network instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}createNetwork.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/networks data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Update Network instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}updateNetwork.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Put Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/networks/2b125640-bd1a-4ef0-9ca0-ea76e2a22801 data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Delete Network instance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}deleteNetwork.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/networks/2b125640-bd1a-4ef0-9ca0-ea76e2a22801 data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
SO ServiceInstance health check
Create Session refrepo http://${REPO_IP}:8080
&{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
@@ -47,7 +124,14 @@ Create VnfInstance for invalid input
Create Session refrepo http://${REPO_IP}:8080
${data}= Get Binary File ${CURDIR}${/}data${/}createVnf.json
&{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
- ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs data=${data} headers=${headers}
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Update VnfInstance for invalid input
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}updateVnf.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v5/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e data=${data} headers=${headers}
Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
Create VnfInstance for invalid credential
@@ -63,13 +147,26 @@ Delete VnfInstance for invalid input
&{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
${resp}= Delete Request refrepo /ecomp/mso/infra/serviceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-7cef19d9a94e data=${data} headers=${headers}
Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
+Replace VnfInstance
+ Create Session refrepo http://${REPO_IP}:8080
+ ${data}= Get Binary File ${CURDIR}${/}data${/}replaceVnf.json
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQxOnBhc3N3b3JkMTI= Content-Type=application/json Accept=application/json
+ ${resp}= Post Request refrepo /ecomp/mso/infra/serviceInstances/v5/ff305d54-75b4-431b-adb2-eb6b9e5ff000/vnfs/aca51b0a-710d-4155-bc7c-c7cef19d94e/replace data=${data} headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
Get Orchestration Requests
Create Session refrepo http://${REPO_IP}:8080
&{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
${resp}= Get Request refrepo /ecomp/mso/infra/orchestrationRequests/v3 headers=${headers}
Should Not Contain ${resp.content} null
-
+
+Get Orchestration Requests Filter criteria
+ Create Session refrepo http://${REPO_IP}:8080
+ &{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
+ ${resp}= Get Request refrepo /ecomp/mso/infra/orchestrationRequests/v3?filter=serviceInstanceId:EQUALS:bc305d54-75b4-431b-adb2-eb6b9e546014 headers=${headers}
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result
+
Create E2EService
Create Session refrepo http://${REPO_IP}:8080
${data}= Get Binary File ${CURDIR}${/}data${/}createE2eservice.json
@@ -110,4 +207,4 @@ Delete E2EService with invalid input data
${data}= Get Binary File ${CURDIR}${/}data${/}deleteE2eserviceInvalid.json
&{headers}= Create Dictionary Authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA== Content-Type=application/json Accept=application/json
${resp}= Delete Request refrepo /ecomp/mso/infra/e2eServiceInstances/v3/ff305d54-75b4-431b-adb2-eb6b9e5ff000 data=${data} headers=${headers}
- Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result \ No newline at end of file
+ Run Keyword If '${resp.status_code}' == '400' or '${resp.status_code}' == '404' or '${resp.status_code}' == '405' log to console \nexecuted with expected result