From 6483985641a241c18868c284a2e784262a60e632 Mon Sep 17 00:00:00 2001
From: uihassan <najam.hassan@xflowresearch.com>
Date: Thu, 5 Nov 2020 15:15:20 +0500
Subject: [PATCH] New Resource NotificationConsumer added

---
 .../NotificationConsumer.robot                | 71 +++++++++++++++++++
 .../environment/variables.txt                 |  3 +
 ...manceInformationAvaliableNotification.json | 12 ++++
 .../jsons/ThresholdCrossedNotification.json   | 15 ++++
 4 files changed, 101 insertions(+)
 create mode 100644 SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot
 create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json
 create mode 100644 SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json

diff --git a/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot
new file mode 100644
index 00000000..ede8234f
--- /dev/null
+++ b/SOL002/VNFPerformanceManagement-API/NotificationConsumer.robot
@@ -0,0 +1,71 @@
+*** Settings ***
+Library           JSONSchemaLibrary    schemas/
+Resource          environment/variables.txt
+Library           JSONLibrary
+Library           OperatingSystem
+Library           String
+Library           REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}    ssl_verify=false
+Suite Setup    Check resource existence and get CallbackUri
+
+*** Test Cases ***
+VNF Performance Information Availability Notification
+    [Documentation]    Test ID: 6.3.3.9.1
+    ...    Test title: VNF Performance Information Availability Notification
+    ...    Test objective: The objective is to test the POST request to callbackUri trigger VNF Performance Information Availability Notification
+    ...    Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM.
+    ...    Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Post VNF Performance Information Availability Notification
+    Check HTTP Response Status Code Is    204
+    
+VNF Threshold Crossed Notification
+    [Documentation]    Test ID: 6.3.3.9.2
+    ...    Test title: VNF Threshold Crossed Notification
+    ...    Test objective: The objective is to test the POST request to callbackUri trigger VNF Threshold Crossed Notification
+    ...    Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM.
+    ...    Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1
+    ...    Config ID: Config_prod_VNFM
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    Post VNF Threshold Crossed Notification
+    Check HTTP Response Status Code Is    204
+    
+*** Keywords ***
+Check resource existence and get CallbackUri
+    Set Headers  {"Accept":"${ACCEPT_JSON}"}  
+    Set Headers  {"Content-Type": "${CONTENT_TYPE_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    GET    ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}	
+    Integer    response status    200
+    Validate Json    response body    PmJob.schema.json
+    Set Global Variable    ${callbackResp}    response body callbackUri
+    
+Check HTTP Response Status Code Is
+    [Arguments]    ${expected_status}
+    ${status}=    Convert To Integer    ${expected_status}    
+    Should Be Equal    ${response['status']}    ${status} 
+    Log    Status code validated
+    
+Post VNF Performance Information Availability Notification
+    log    Trying to perform a POST to get notification
+    Set Headers  {"Accept":"${ACCEPT_JSON}"}  
+    Set Headers  {"Content-Type": "${CONTENT_TYPE_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    ${template} =    Get File    jsons/PerformanceInformationAvaliableNotification.json
+    ${body}=        Format String   ${template}    objectInstanceId=${objectInstanceId} 
+    Post    ${callbackResp}    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}	
+
+Post VNF Threshold Crossed Notification
+    log    Trying to perform a POST to get notification
+    Set Headers  {"Accept":"${ACCEPT_JSON}"}  
+    Set Headers  {"Content-Type": "${CONTENT_TYPE_JSON}"}
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"Authorization":"${AUTHORIZATION}"}
+    ${template} =    Get File    jsons/ThresholdCrossedNotification.json
+    ${body}=        Format String   ${template}    thresholdId=${thresholdId}    objectInstanceId=${objectInstanceId} 
+    Post    ${callbackResp}    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}	
diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt
index 8636509c..b3453720 100644
--- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt
+++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt
@@ -63,3 +63,6 @@ ${filter_ko}      erroneousFilter=erroneous
 ${total_polling_time}   2 min
 ${polling_interval}     10 sec
 
+${callbackResp}    localhost
+
+${objectInstanceId}    
\ No newline at end of file
diff --git a/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json
new file mode 100644
index 00000000..5ac84f0a
--- /dev/null
+++ b/SOL002/VNFPerformanceManagement-API/jsons/PerformanceInformationAvaliableNotification.json
@@ -0,0 +1,12 @@
+{{
+	"id":"",
+	"notificationType":"PerformanceInformationAvailableNotification",
+	"timeStamp":"",
+	"objectType":"",
+	"objectInstanceId":"{objectInstanceId}",
+	"_links":{{
+		"objectInstance":"",
+		"pmJob":"",
+		"performanceReport":""
+	}}
+}}
diff --git a/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json
new file mode 100644
index 00000000..cb963a10
--- /dev/null
+++ b/SOL002/VNFPerformanceManagement-API/jsons/ThresholdCrossedNotification.json
@@ -0,0 +1,15 @@
+{{
+	"id":"",
+	"notificationType":"ThresholdCrossedNotification",
+	"timeStamp":"",
+	"thresholdId":"{thresholdId}",
+	"crossingDirection":"UP",
+	"objectType":"",
+	"objectInstanceId":"{objectInstanceId}",
+	"performanceMetric":"",
+	"performanceValue":"",
+	"_links":{{
+		"objectInstance":"",
+		"threshold":""
+	}}
+}}
-- 
GitLab