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