*** 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 # /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}