summaryrefslogtreecommitdiffstats
path: root/robot/resources/usecases/5gbulkpm_interface.robot
blob: 3289f49f558b38064d165eef09e9374350b07c35 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
124
125
126
127
128
129
130
131
*** Settings ***
Documentation   The main interface for interacting with 5G Bulkpm.
Library         RequestsLibrary
Library           OperatingSystem
Library           String
Library           JSONLibrary

*** Variables ***
${INVENTORY_SERVER}                                 ${GLOBAL_INVENTORY_SERVER_PROTOCOL}://${GLOBAL_INVENTORY_SERVER_NAME}:${GLOBAL_INVENTORY_SERVER_PORT}
${DEPLOYMENT_SERVER}                                ${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PROTOCOL}://${GLOBAL_DEPLOYMENT_HANDLER_SERVER_NAME}:${GLOBAL_DEPLOYMENT_HANDLER_SERVER_PORT}
${DR_ENDPOINT}                                      ${GLOBAL_DMAAP_DR_PROV_SERVER_PROTOCOL}://${GLOBAL_INJECTED_DMAAP_DR_PROV_IP_ADDR}:${GLOBAL_DMAAP_DR_PROV_SERVER_PORT}
${DMAAP_BC_SERVER}                                  ${GLOBAL_BC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_BC_IP_ADDR}:${GLOBAL_BC_HTTPS_SERVER_PORT}
${VES_HEALTH_CHECK_PATH}                            ${GLOBAL_DCAE_VES_HTTPS_PROTOCOL}://${GLOBAL_INJECTED_DCAE_VES_HOST}:${GLOBAL_DCAE_VES_HTTPS_SERVER_PORT}
${MR_PUBLISH_TEMPLATE}                              mr/mr_publish.jinja

*** Keywords ***
Undeploy Service
    [Arguments]         ${server}                   ${endpoint}
    ${session}=         Create Session              deployment                 ${server}
    ${resp}=            Delete Request              deployment                 ${endpoint}
    [Return]            ${resp}

Deployment Status
    [Arguments]         ${server}                   ${endpoint}            ${deployment}      ${operationId}
    ${session}=         Create Session              deployment-status      ${server}
    ${resp}=            Get Request                 deployment-status      /${endpoint}/${deployment}/operation/${operationId}
    ${status}           Set Variable                ${resp.json().get('status')}
    Should Be Equal As Strings                      ${status}               succeeded


Validate Json Event From Topic
    [Arguments]  ${expected_event_json_path}  ${expected_pm_str}  ${known_host_variable}=False
    ${PmEventRespFiles} =  Run Keyword If  "${known_host_variable}" == "False"  OperatingSystem.List Files In Directory  ${expected_event_json_path}  5gbulkpm-*.json  absolute=True
    ...                              ELSE                                       OperatingSystem.List Files In Directory  ${expected_event_json_path}  5gbulkpm_checking_sftp_rsa_key-*.json  absolute=True
    Set Test Variable  ${pmResultFound}  False
    FOR  ${filePath}  IN  @{PmEventRespFiles}
         Set Log Level  NONE
         ${pmData} =  OperatingSystem.Get File  ${filePath}
         Set Log Level  INFO
         ${statusOfPmResult}=  Run Keyword And Return Status  Should Contain  ${pmData}  ${expected_pm_str}
         Run Keyword If  '${statusOfPmResult}' == 'True'  Run Keywords  Set Test Variable  ${pmResultFound}  True
         ...                                                       AND  Exit For Loop
    END

   Should Be Equal  ${pmResultFound}  True

Get Event From Topic
    [Arguments]  ${expected_event_json_path}  ${known_host_variable}=False
    Wait Until Keyword Succeeds  2 min  5 s  xNF PM File Validate  none  ${expected_event_json_path}  ${known_host_variable}

xNF PM File Validate
    [Arguments]  ${expected_pm_str}  ${expected_event_json_path}  ${known_host_variable}=False
    #Run Keyword If  '${expected_event_json_path}' != 'none'  Set Log Level  NONE
    ${timestamp}=  Get Time  epoch
    ${resp}=  Run MR Auth Get Request     ${MR_TOPIC_URL_PATH}     ${GLOBAL_DCAE_USERNAME}      ${GLOBAL_DCAE_PASSWORD}
    Run keyword If  ${resp.text} == @{EMPTY}  Fail  msg=Event is empty!
    ${pmEventJson}=  Run Keyword If  '${expected_event_json_path}' != 'none'  To Json  ${resp.text}  pretty_print=True
    Run Keyword If  '${expected_event_json_path}' != 'none' and '${known_host_variable}' == 'False'  Create File  ${expected_event_json_path}/5gbulkpm-pm_event-${timestamp}.json  ${pmEventJson}
    ...    ELSE IF  '${expected_event_json_path}' != 'none' and '${known_host_variable}' == 'True'   Create File  ${expected_event_json_path}/5gbulkpm_checking_sftp_rsa_key-pm_event-${timestamp}.json  ${pmEventJson}
    #Run Keyword If  '${expected_event_json_path}' != 'none'  Set Log Level  INFO
    Run Keyword If  '${expected_event_json_path}' == 'none'  Should Contain  ${resp.text}  ${expected_pm_str}

Topic Validate
    [Arguments]                         ${value}
    ${timestamp}=                       Get Current Date
    ${dict}=                            Create Dictionary                           timestamp=${timestamp}
    Templating.Create Environment       mr                                          ${GLOBAL_TEMPLATE_FOLDER}
    ${data}=                            Templating.Apply Template                   mr                                  ${MR_PUBLISH_TEMPLATE}              ${dict}
    ${resp}=                            Run MR Auth Post Request (User And Pass)    ${MR_TOPIC_URL_PATH_FOR_POST}       ${GLOBAL_DCAE_USERNAME}             ${GLOBAL_DCAE_PASSWORD}       ${data}
    Should Be Equal As Strings          ${resp.status_code}                         200
    ${resp}=                            Run MR Auth Get Request                     ${MR_TOPIC_URL_PATH}                ${GLOBAL_DCAE_USERNAME}             ${GLOBAL_DCAE_PASSWORD}
    Should Contain                      ${resp.text}                                ${value}


Usecase Teardown
    Undeploy Service                    ${DEPLOYMENT_SERVER}                 /${DEPLOYMENT_ENDPOINT}/pmmapper
    Undeploy Service                    ${DEPLOYMENT_SERVER}                 /${DEPLOYMENT_ENDPOINT}/sftpserver
    Undeploy Service                    ${INVENTORY_SERVER}                  ${INVENTORY_ENDPOINT}/${serviceTypeId-Sftp}
    Undeploy Service                    ${DEPLOYMENT_SERVER}                  /${DEPLOYMENT_ENDPOINT}/datafile


Send File Ready Event to VES Collector
    [Arguments]                         ${pm_file}                          ${file_format_type}             ${file_format_version}
    ${headers}=                         Create Dictionary                   content-type=application/json
    ${fileready}=                       OperatingSystem.Get File            ${JSON_DATA_FILE}
    ${auth}=                            Create List                         ${GLOBAL_DCAE_VES_USERNAME}     ${GLOBAL_DCAE_VES_PASSWORD}
    ${session}=                         Create Session                      ves                             ${VES_HEALTH_CHECK_PATH}      auth=${auth}
    ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${fileready}   headers=${headers}
    Should Be Equal As Strings          ${resp.status_code}                 202
    ${VES_FILE_READY_NOTIFICATION}      Set Variable                        {"event":{"commonEventHeader":{"version":"4.0.1","vesEventListenerVersion":"7.0.1","domain":"notification","eventName":"Noti_RnNode-Ericsson_FileReady","eventId":"FileReady_1797490e-10ae-4d48-9ea7-3d7d790b25e1","lastEpochMicrosec":8745745764578,"priority":"Normal","reportingEntityName":"otenb5309","sequence":0,"sourceName":"oteNB5309","startEpochMicrosec":8745745764578,"timeZoneOffset":"UTC+05.30"},"notificationFields":{"changeIdentifier":"PM_MEAS_FILES","changeType":"FileReady","notificationFieldsVersion":"2.0","arrayOfNamedHashMap":[{"name":"${pm_file}","hashMap":{"location":"sftp://bulkpm:bulkpm@sftpserver:22/upload/${pm_file}","compression":"gzip","fileFormatType":"${file_format_type}","fileFormatVersion":"${file_format_version}"}}]}}}
    ${resp}=                            Post Request                        ves                             ${VES_LISTENER_PATH}          data=${VES_FILE_READY_NOTIFICATION}   headers=${headers}
    Should Be Equal As Strings          ${resp.status_code}                 202

Upload PM Files to xNF SFTP Server
    [Arguments]                         ${pm_file_path}                   ${bulk_pm_mode}                    ${known_host_variable}=False
    Open Connection                     sftpserver
    Login                               bulkpm                             bulkpm
    ${epoch}=                           Get Current Date                   result_format=epoch
    ${pm_file} =  Run Keyword If        "${bulk_pm_mode}" == "custom" and "${known_host_variable}" == "False"  Fetch From Right                   ${pm_file_path}               marker=/
    ...                  ELSE IF        "${bulk_pm_mode}" == "custom" and "${known_host_variable}" == "True"   Set Variable                       PM${epoch}.xml.gz
    ...                     ELSE                                           Set Variable                        A${epoch}.xml.gz

    Put File                            ${pm_file_path}                    upload/${pm_file}
    [Return]  ${pm_file}

Check Given Print In DFC Log
    [Arguments]  ${check_dfc_logs}
    ${dfc_logs}=                     Run Given Command On DFC Container      ${CHECK_DFC_LOGS}
    Should Contain                   ${dfc_logs}                             HostKey has been changed

Run Given Command On DFC Container
    [Arguments]  ${user_command}
    ${run_command} =   Run And Return Rc And Output  ${user_command}
    ${command_output} =  Set Variable  ${run_command[1]}
    ${regexp_matches} =  Get Regexp Matches  ${command_output}  .*(\\s|\\[)+(.+-datafile-collector).*  2
    ${dfc_container_name} =  Set Variable  ${regexp_matches[0]}
    ${new_command} =  Set Variable  ${user_command} ${dfc_container_name}
    ${command_output} =  Run And Return Rc And Output  ${new_command}
    Should Be Equal As Integers  ${command_output[0]}  0
    ${log} =  Set Variable  ${command_output[1]}
    [Return]  ${log}

Check Known Hosts In Env
    [Arguments]    ${CHECK_KNOWN_HOSTS}
    ${check} =  Run And Return Rc And Output  ${CHECK_KNOWN_HOSTS}
    Should Be Equal As Integers  ${check[0]}  0
    ${env} =  Set Variable  ${check[1]}
    ${string_matches} =  Get Lines Containing String  ${env}  KNOWN_HOSTS_FILE_PATH=/home/datafile/.ssh/known_host  case_insensitive=True
    ${output} =  Should Not Be Empty  ${string_matches}
    [Return]    ${output}