From ed66ff948cfe0d66467a5f818493ba35387dbe30 Mon Sep 17 00:00:00 2001 From: Brian Freeman Date: Thu, 2 May 2019 15:30:02 -0500 Subject: Add DMaaP Update topic ACL test fixed Pomba Documentation warning Issue-ID: INT-1058 Change-Id: Ifda1ccf4002312d031fde2520226de719b788853 Signed-off-by: Brian Freeman --- robot/assets/templates/mr_put_acl.template | 7 ++++ robot/resources/mr_interface.robot | 61 +++++++++++++++++++++++++++++- robot/resources/pomba_interface.robot | 6 +-- robot/testsuites/post-install-tests.robot | 16 ++++++++ 4 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 robot/assets/templates/mr_put_acl.template create mode 100644 robot/testsuites/post-install-tests.robot diff --git a/robot/assets/templates/mr_put_acl.template b/robot/assets/templates/mr_put_acl.template new file mode 100644 index 00000000..62c96e8c --- /dev/null +++ b/robot/assets/templates/mr_put_acl.template @@ -0,0 +1,7 @@ +{ + "topicName":"${TOPIC_NAME}", + "topicDescription":"This is a TestTopic", + "partitionCount":"1", + "replicationCount":"3", + "transactionEnabled":"true" +} diff --git a/robot/resources/mr_interface.robot b/robot/resources/mr_interface.robot index 29e9dd3e..0c194c10 100644 --- a/robot/resources/mr_interface.robot +++ b/robot/resources/mr_interface.robot @@ -1,17 +1,24 @@ *** 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 RequestsClientCert -Library RequestsLibrary +Library RequestsLibrary Library UUID +Library DateTime +Library Process +Library JSONUtils Resource global_properties.robot +Resource ../resources/json_templater.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} robot/assets/templates/mr_publish.template +${MR_PUT_ACL_TEMPLATE} robot/assets/templates/mr_put_acl.template *** Keywords *** @@ -37,6 +44,58 @@ Run MR PubSub Health Check 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 + ${data}= Fill JSON Template File ${MR_PUT_ACL_TEMPLATE} ${dict} + #Log To Console ${\n}Create TEST_TOPIC_ACL + ${resp}= Run MR Auth Post Request ${MR_CREATE_TOPIC_PATH} iPIxkpAMI8qTcQj8 Ehq3WyT4bkif4zwgEbvshGal ${data} + #Log To Console 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} diff --git a/robot/resources/pomba_interface.robot b/robot/resources/pomba_interface.robot index ddea52a6..35161188 100644 --- a/robot/resources/pomba_interface.robot +++ b/robot/resources/pomba_interface.robot @@ -1,7 +1,7 @@ *** Settings *** Documentation Tests the health of the POMBA containers: aai-context-builder, sdc-context-builder, -Documentation network-discovery-micro-service, Context-Aggregator, pomba-kibana, pomba-elasticsearch, -Documentation service-decomposition, sdnc-context-builder and network-discovery-context-builder. +... network-discovery-micro-service, Context-Aggregator, pomba-kibana, pomba-elasticsearch, +... service-decomposition, sdnc-context-builder and network-discovery-context-builder. Library Collections Library String Library RequestsLibrary @@ -154,4 +154,4 @@ Run Pomba Context Aggregator Get Request ${session}= Create Session pomba-contextaggregator ${POMBA_CONTEXTAGGREGATOR_ENDPOINT} ${resp}= Get Request pomba-contextaggregator ${data_path} Log Received response from pomba-contextaggregator ${resp.text} - [Return] ${resp} \ No newline at end of file + [Return] ${resp} diff --git a/robot/testsuites/post-install-tests.robot b/robot/testsuites/post-install-tests.robot new file mode 100644 index 00000000..a30cb8d9 --- /dev/null +++ b/robot/testsuites/post-install-tests.robot @@ -0,0 +1,16 @@ +*** Settings *** +Documentation Testing Installation +... Tests that confirm an installation is valid and not meant as recurring health test +... + +Test Timeout 10 second + +Resource ../resources/mr_interface.robot + +*** Test Cases *** + +Basic DMAAP Message Router ACL Update Test + [Tags] dmaapacl postinstall + [Timeout] 30 + Run MR Update Topic Acl + -- cgit 1.2.3-korg