diff options
Diffstat (limited to 'robot/resources/dmaap/mr_interface.robot')
-rw-r--r-- | robot/resources/dmaap/mr_interface.robot | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/robot/resources/dmaap/mr_interface.robot b/robot/resources/dmaap/mr_interface.robot new file mode 100644 index 00000000..f4c57cd2 --- /dev/null +++ b/robot/resources/dmaap/mr_interface.robot @@ -0,0 +1,154 @@ +*** Settings *** +Documentation The main interface for interacting with Message router. It handles low level stuff like managing the http request library and message router required fields +Library RequestsLibrary +Library DateTime +Library Process +Library ONAPLibrary.JSON +Library ONAPLibrary.Utilities +Library ONAPLibrary.Templating WITH NAME Templating + +Resource global_properties.robot + +*** Variables *** +${MR_HEALTH_CHECK_PATH} /topics +${MR_PUB_HEALTH_CHECK_PATH} /events/TEST_TOPIC +${MR_SUB_HEALTH_CHECK_PATH} /events/TEST_TOPIC/g1/c4?timeout=5000 +${MR_CREATE_TOPIC_PATH} /topics/create +${MR_UPDATE_ACL_TOPIC_PATH} /topics/TEST_TOPIC_ACL/producers +${MR_ENDPOINT} ${GLOBAL_MR_SERVER_PROTOCOL}://${GLOBAL_INJECTED_MR_IP_ADDR}:${GLOBAL_MR_SERVER_PORT} +${MR_PUBLISH_TEMPLATE} mr/mr_publish.jinja +${MR_PUT_ACL_TEMPLATE} mr/mr_put_acl.jinja + + +*** Keywords *** +Run MR Health Check + [Documentation] Runs MR Health check + ${resp}= Run MR Get Request ${MR_HEALTH_CHECK_PATH} + Should Be Equal As Strings ${resp.status_code} 200 + Should Contain ${resp.json()} topics + +Run MR PubSub Health Check + [Documentation] Runs MR PubSub Health check + #${resp}= Run MR Get Request ${MR_SUB_HEALTH_CHECK_PATH} + # topic may not be created which is a 400 error + + ${resp}= Run MR Post Request ${MR_PUB_HEALTH_CHECK_PATH} + Should Be Equal As Strings ${resp.status_code} 200 + Should Contain ${resp.json()} serverTimeMs Failed to Write Data + ${resp}= Run MR Get Request ${MR_SUB_HEALTH_CHECK_PATH} + # Always Write twice to catch lost first message + ${resp}= Run MR Post Request ${MR_PUB_HEALTH_CHECK_PATH} + ${resp}= Run MR Get Request ${MR_SUB_HEALTH_CHECK_PATH} + # ${resp} is an array + Should Be Equal As Strings ${resp.status_code} 200 + Should Contain ${resp.json()[0]} timestamp Failed to Read Data + + +Run MR Update Topic Acl + [Documentation] Runs MR create topic and update producer credentials + # + # Testing to Delete a Topic: + # /opt/kafka/bin/kafka-topics.sh --zookeeper message-router-zookeeper:2181 --delete --topic <topic_name> + # /opt/kafka/bin/kafka-topics.sh --zookeeper message-router-zookeeper:2181 --delete --topic TEST_TOPIC_ACL + # + # Appears to not care if topic already exists with the POST / PUT method + # + ${dict}= Create Dictionary TOPIC_NAME=TEST_TOPIC_ACL + Templating.Create Environment mr ${GLOBAL_TEMPLATE_FOLDER} + ${data}= Templating.Apply Template mr ${MR_PUT_ACL_TEMPLATE} ${dict} + ${resp}= Run MR Auth Post Request ${MR_CREATE_TOPIC_PATH} iPIxkpAMI8qTcQj8 Ehq3WyT4bkif4zwgEbvshGal ${data} + #Log Update Owner for TEST_TOPIC_ACL + ${resp}= Run MR Auth Put Request ${MR_UPDATE_ACL_TOPIC_PATH}/iPIxkpAMI8qTcQj8 iPIxkpAMI8qTcQj8 Ehq3WyT4bkif4zwgEbvshGal ${data} + Should Be Equal As Strings ${resp.status_code} 200 + +Run MR Auth Post Request + [Documentation] Runs MR Authenticated Post Request + [Arguments] ${data_path} ${id_key} ${secret_key} ${data} + ${current_time}= Get Time + ${time}= Evaluate datetime.datetime.today().replace(tzinfo=pytz.UTC).replace(microsecond=0).isoformat() modules=datetime,pytz + ${command}= Set Variable /bin/echo -n "${time}" | /usr/bin/openssl sha1 -hmac "${secret_key}" -binary | /usr/bin/openssl base64 + ${result}= Run Process ${command} shell=True + ${signature}= Set Variable ${result.stdout} + ${xAuth}= Set Variable ${id_key}:${signature} + ${headers}= Create Dictionary Content-Type=application/json X-CambriaAuth=${xAuth} X-CambriaDate=${time} + ${session}= Create Session mr ${MR_ENDPOINT} + ${resp}= Post Request mr ${data_path} headers=${headers} data=${data} + ${status_string}= Convert To String ${resp.status_code} + Should Match Regexp ${status_string} ^(204|200)$ + Log Received response from message router ${resp.text} + [Return] ${resp} + + +Run MR Auth Put Request + [Documentation] Runs MR Authenticated Put Request + [Arguments] ${data_path} ${id_key} ${secret_key} ${data} + ${current_time}= Get Time + ${time}= Evaluate datetime.datetime.today().replace(tzinfo=pytz.UTC).replace(microsecond=0).isoformat() modules=datetime,pytz + ${command}= Set Variable /bin/echo -n "${time}" | /usr/bin/openssl sha1 -hmac "${secret_key}" -binary | /usr/bin/openssl base64 + ${result}= Run Process ${command} shell=True + ${signature}= Set Variable ${result.stdout} + ${xAuth}= Set Variable ${id_key}:${signature} + ${headers}= Create Dictionary Content-Type=application/json X-CambriaAuth=${xAuth} X-CambriaDate=${time} + ${session}= Create Session mr ${MR_ENDPOINT} + ${resp}= Put Request mr ${data_path} headers=${headers} data=${data} + Should Be Equal As Strings ${resp.status_code} 200 + Log Received response from message router ${resp.text} + [Return] ${resp} + +Run MR Auth Get Request + [Documentation] Runs MR Authenticated Put Request + [Arguments] ${data_path} ${username} ${password} + ${auth}= Create List ${username} ${password} + ${session}= Create Session mr ${MR_ENDPOINT} auth=${auth} + ${uuid}= Generate UUID4 + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} + ${resp}= Get Request mr ${data_path} headers=${headers} + Log Received response from message router ${resp.text} + [Return] ${resp} + +Run MR Auth Post Request (User And Pass) + [Documentation] Runs MR Authenticated Post Request + [Arguments] ${data_path} ${username} ${password} ${data} + ${auth}= Create List ${username} ${password} + ${session}= Create Session mr ${MR_ENDPOINT} auth=${auth} + ${uuid}= Generate UUID4 + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} + ${resp}= Post Request mr ${data_path} headers=${headers} data=${data} + ${status_string}= Convert To String ${resp.status_code} + Should Match Regexp ${status_string} ^(204|200)$ + Log Received response from message router ${resp.text} + [Return] ${resp} + +Run MR Get Request + [Documentation] Runs MR Get request + [Arguments] ${data_path} + ${session}= Create Session mr ${MR_ENDPOINT} + ${uuid}= Generate UUID4 + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} + ${resp}= Get Request mr ${data_path} headers=${headers} + Log Received response from message router ${resp.text} + [Return] ${resp} + +Run MR Post Request + [Documentation] Runs MR Post request + [Arguments] ${data_path} + ${session}= Create Session mr ${MR_ENDPOINT} + ${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} + ${uuid}= Generate UUID4 + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} + ${resp}= Post Request mr ${data_path} data=${data} headers=${headers} + Log Received response from message router ${resp.text} + [Return] ${resp} + +Run MR Delete Request + [Documentation] Runs MR Delete request + [Arguments] ${data_path} + ${session}= Create Session mr ${MR_ENDPOINT} + ${uuid}= Generate UUID4 + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid} X-FromAppId=${GLOBAL_APPLICATION_ID} + ${resp}= Delete Request mr ${data_path} headers=${headers} + Log Received response from message router ${resp.status_code} + [Return] ${resp}
\ No newline at end of file |