Newer
Older
*** Setting ***
Suite Setup Create Sessions
Suite Teardown Terminate All Processes kill=true
Resource variables.txt
Library OperatingSystem
Library MockServerLibrary
Library Process
Library BuiltIn
Library Collections
Library String
Library JSONSchemaLibrary schemas/
Library JSONLibrary
Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}
Documentation
... Preconditions:
... ... Mock server's jar should be locally present on the same directory when the test will run
... ... The notification endpoint will be configured on http://localhost:8888/subscribe
... ... Subscription to LCM operations previously performed using as callback_URI: http://localhost:8888/subscribe.
*** Test Cases ***
Create VNFInstance
Log Start Notification handler
${req}= Start Notification Handler VnfIdentifierCreationNotification ${callback_endpoint}
Log Create VNF Instance Resource
${resource_response} = Create VNF Resource
Validate Status Code ${resource_response.status_code} 201
Validate Header ${resource_response.headers} Location
Validate Header ${resource_response.headers} Content-Type
Validate JsonSchema ${resource_response.body} vnfInstance.schema.json
Verify Notification Handler ${req}
Log Instantiate VNF
${req}= Start Notification Handler VnfLcmOperationOccurrenceNotification ${callback_endpoint}
${instance_response}= Instantiate VNF ${resource_response.body.id}
Validate Status Code ${instance_response.status_code} 202
Validate Header ${instance_response.headers} Location
Verify Notification Handler ${req}
Wait Until VNF Instantiated ${instance_response.headers.Location}
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Log Retrieve VNF Instance
${get_response}= Retrieve VNFinstance ${instance_response.body.id}
Should Not Be Empty ${get_response}
Validate Status Code ${get_response.status_code} 200
Should Be Equal ${instance_response.body.id} ${get_response.body.id}
Validate Header ${get_response.headers} Content-Type
Validate JsonSchema ${get_response.body} vnfInstance.schema.json
*** Keywords ***
Create VNF Resource
Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiVersion}/vnf_instances
Set Headers {"Accept":"${ACCEPT}"}
Set Headers {"Content-Type": "${CONTENT_TYPE}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"}
${body}= Get File json/createVnfRequest.json
Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances ${body}
[Return] response
Instantiate VNF
[Arguments] ${vnfInstanceId}
Log Instantiate a vnf Instance
Set Headers {"Accept":"${ACCEPT}"}
Set Headers {"Content-Type": "${CONTENT_TYPE}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"}
${body}= Get File json/instantiateVnfRequest.json
Post ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body}
[Return] response
Validate Status Code
[Arguments] ${curr_status} ${exp_status}
Should Be Equal ${curr_status} ${exp_status}
Log Status code validated
Validate Header
[Arguments] ${headers} ${CONTENT_TYPE}
Should Contain ${headers} ${CONTENT_TYPE}
Log Header is present
Validate JsonSchema
[Arguments] ${body} ${schema}
${json}= evaluate json.loads('''${body}''') json
Validate Json ${schema} ${json}
Log Validation OK
Validate VNF Status
[Arguments] ${current} ${expected}
Should Be Equal As Strings ${current} ${expected}
Log VNF Status in the correct status
Retrieve VNFinstance
[Arguments] ${vnfId}
Set Headers {"Accept":"${ACCEPT}"}
Set Headers {"Content-Type": "${CONTENT_TYPE}"}
Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"}
Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances/${vnfId}
[Return] response
Create Sessions
Start Process java -jar mockserver-netty-5.3.0-jar-with-dependencies.jar -serverPort ${callback_port} alias=mockInstance
Wait For Process handle=mockInstance timeout=5s on_timeout=continue
Create Mock Session ${callback_uri}:${callback_port}
Start Notification Handler
[Arguments] ${element} ${endpoint}
${json}= Get File schemas/${element}.schema.json
${BODY}= evaluate json.loads('''${json}''') json
Log Creating mock request and response to handle ${element}
&{req}= Create Mock Request Matcher Schema POST ${endpoint} body=${BODY}
&{rsp}= Create Mock Response Schema headers="Content-Type: application/json" status_code=204
Create Mock Expectation ${req} ${rsp}
[Return] ${req}
Verify Notification Handler
[Arguments] ${request}
Verify Mock Expectation ${request}
Clear Requests ${callback_endpoint}
Wait Until VNF Instantiated
[Arguments] ${vnfLcmOpOccId}
${req}= Start Notification Handler VnfLcmOperationOccurrenceNotification ${callback_endpoint}
:FOR ${i} IN RANGE 20
\ Get ${vnfLcmOpOccId}
\ ${body}= Output response body
\ Exit For Loop If ${body.operationState} == COMPLETED
Clear Requests ${callback_endpoint}