diff options
15 files changed, 306 insertions, 12 deletions
diff --git a/bootstrap/vagrant-onap/lib/mr b/bootstrap/vagrant-onap/lib/mr index 869994d2d..76b27b1ea 100755 --- a/bootstrap/vagrant-onap/lib/mr +++ b/bootstrap/vagrant-onap/lib/mr @@ -3,23 +3,32 @@ set -o xtrace source /var/onap/functions -source /var/onap/asserts src_folder=$git_src_folder/dcae/message-router -# install_message_router() - Downloads and configure message router source code -function _install_message_router { +# clone_mr_repos() - Function that clones the Message Router repositories +function clone_mr_repos { clone_repo dcae/demo/startup/message-router $src_folder - pushd $src_folder +} + +# get_mr_images() - Function that retrieves the Message Router Docker images +function get_mr_images { pull_docker_image attos/dmaap pull_docker_image wurstmeister/zookeeper +} + +# install_message_router() - Downloads and configure message router source code +function install_message_router { install_docker_compose + + pushd $src_folder bash deploy.sh - asserts_image dockerfiles_kafka popd } # init_mr() - Function that initialize Message Router services function init_mr { - _install_message_router + clone_mr_repos + get_mr_images + install_message_router } diff --git a/bootstrap/vagrant-onap/tests/test_mr b/bootstrap/vagrant-onap/tests/test_mr index 6fad08311..d8db84940 100644 --- a/bootstrap/vagrant-onap/tests/test_mr +++ b/bootstrap/vagrant-onap/tests/test_mr @@ -4,19 +4,33 @@ source /var/onap_tests/_test_base source /var/onap/mr covered_functions=( -"init_mr" +"clone_mr_repos" "get_mr_images" "install_message_router" ) -# test_init_mr() - Verify the built and start of Message Router services -function test_init_mr { - init_mr +# test_clone_mr_repos() - Verify that Message Router repositories are cloned properly +function test_clone_mr_repos { + clone_mr_repos + + asserts_file_exist $src_folder/deploy.sh +} + +# test_get_mr_images() - Verify that Message Router Docker images are retrieved +function test_get_mr_images { + get_mr_images - asserts_image dockerfiles_kafka - asserts_image anapsix/alpine-java asserts_image attos/dmaap asserts_image wurstmeister/zookeeper } +# test_install_message_router() - Verify the built and start of Message Router services +function test_install_message_router { + clone_mr_repos + get_mr_images + install_message_router + + asserts_image_running dockerfiles_kafka +} + if [ "$1" != '*' ]; then unset covered_functions covered_functions=$1 diff --git a/test/csit/plans/aai/search-data-service/appconfig/analysis-config.json b/test/csit/plans/aai/search-data-service/appconfig/analysis-config.json new file mode 100644 index 000000000..f98ea3799 --- /dev/null +++ b/test/csit/plans/aai/search-data-service/appconfig/analysis-config.json @@ -0,0 +1,32 @@ +[ + { + "name": "whitespace_analyzer", + "description": "A standard whitespace analyzer.", + "behaviours": [ + "Tokenize the text using white space characters as delimeters.", + "Convert all characters to lower case.", + "Convert all alphanumeric and symbolic Unicode characters above the first 127 ASCII characters into their ASCII equivalents." + ], + "tokenizer": "whitespace", + "filters": [ + "lowercase", + "asciifolding" + ] + }, + { + "name": "ngram_analyzer", + "description": "An analyzer which performs ngram filtering on the data stream.", + "behaviours": [ + "Tokenize the text using white space characters as delimeters.", + "Convert all characters to lower case.", + "Convert all alphanumeric and symbolic Unicode characters above the first 127 ASCII characters into their ASCII equivalents.", + "Apply ngram filtering using the following values for minimum and maximum size in codepoints of a single n-gram: minimum = 1, maximum = 2." + ], + "tokenizer": "whitespace", + "filters": [ + "lowercase", + "asciifolding", + "ngram_filter" + ] + } +]
\ No newline at end of file diff --git a/test/csit/plans/aai/search-data-service/appconfig/auth/search_policy.json b/test/csit/plans/aai/search-data-service/appconfig/auth/search_policy.json new file mode 100644 index 000000000..72d8902fb --- /dev/null +++ b/test/csit/plans/aai/search-data-service/appconfig/auth/search_policy.json @@ -0,0 +1,18 @@ +{ + "roles": [ + { + "name": "admin", + "functions": [ + { + "name": "search", "methods": [ { "name": "GET" },{ "name": "DELETE" }, { "name": "PUT" }, { "name": "POST" } ] + } + ], + + "users": [ + { + "username": "CN=ONAP, OU=ONAP, O=ONAP, L=Ottawa, ST=Ontario, C=CA" + } + ] + } + ] +} diff --git a/test/csit/plans/aai/search-data-service/appconfig/auth/tomcat_keystore b/test/csit/plans/aai/search-data-service/appconfig/auth/tomcat_keystore Binary files differnew file mode 100644 index 000000000..9eec841aa --- /dev/null +++ b/test/csit/plans/aai/search-data-service/appconfig/auth/tomcat_keystore diff --git a/test/csit/plans/aai/search-data-service/appconfig/elastic-search.properties b/test/csit/plans/aai/search-data-service/appconfig/elastic-search.properties new file mode 100644 index 000000000..5d9a37c05 --- /dev/null +++ b/test/csit/plans/aai/search-data-service/appconfig/elastic-search.properties @@ -0,0 +1,6 @@ +# ElasticSearch Configuration + +es.cluster-name=ES_AAI +es.http-port=9200 + +## The IP address will be injected by the csit setup script diff --git a/test/csit/plans/aai/search-data-service/appconfig/filter-config.json b/test/csit/plans/aai/search-data-service/appconfig/filter-config.json new file mode 100644 index 000000000..e2d528582 --- /dev/null +++ b/test/csit/plans/aai/search-data-service/appconfig/filter-config.json @@ -0,0 +1,7 @@ +[ + { + "name": "ngram_filter", + "description": "Custom NGram Filter.", + "configuration": " \"type\": \"nGram\", \"min_gram\": 1, \"max_gram\": 50, \"token_chars\": [ \"letter\", \"digit\", \"punctuation\", \"symbol\" ]" + } +]
\ No newline at end of file diff --git a/test/csit/plans/aai/search-data-service/docker-compose.yml b/test/csit/plans/aai/search-data-service/docker-compose.yml new file mode 100644 index 000000000..d48c9fa0a --- /dev/null +++ b/test/csit/plans/aai/search-data-service/docker-compose.yml @@ -0,0 +1,26 @@ +version: '2' +services: + aai.searchservice.simpledemo.openecomp.org: + image: ${DOCKER_REGISTRY}/openecomp/search-data-service + hostname: aai.searchservice.simpledemo.openecomp.org + container_name: search-service-container + volumes: + - ${SEARCH_LOGS}:/logs + - ./appconfig:/opt/app/search-data-service/config + ports: + - 9509:9509 + environment: + - CONFIG_HOME=/opt/app/search-data-service/config/ + - KEY_STORE_PASSWORD=OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + - KEY_MANAGER_PASSWORD=OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 + logging: + driver: "json-file" + options: + max-size: "30m" + max-file: "5" + +networks: + default: + driver: bridge + driver_opts: + com.docker.network.driver.mtu: ${MTU} diff --git a/test/csit/plans/aai/search-data-service/setup.sh b/test/csit/plans/aai/search-data-service/setup.sh new file mode 100644 index 000000000..df50fed16 --- /dev/null +++ b/test/csit/plans/aai/search-data-service/setup.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# +# Copyright © 2017 AT&T Intellectual Property. +# Copyright © 2017 Amdocs +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. + +echo search service setup script running + +export SEARCH_LOGS="/opt/aai/logroot/AAI-SEARCH"; +export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1); +export DOCKER_REGISTRY="nexus3.onap.org:10001"; + +# inject the current IP to the elastic-search config file +echo "es.ip-address="`ip addr show docker0 | head -3 | tail -1 | cut -d' ' -f6 | cut -d'/' -f1` >> appconfig/elastic-search.properties + +docker run -d --name "stretchy" -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" elasticsearch:2.4.6 +docker-compose -f docker-compose.yml up -d aai.searchservice.simpledemo.openecomp.org + +echo sleeping for 10 seconds while services start up +sleep 10 diff --git a/test/csit/plans/aai/search-data-service/teardown.sh b/test/csit/plans/aai/search-data-service/teardown.sh new file mode 100644 index 000000000..36d3e1daf --- /dev/null +++ b/test/csit/plans/aai/search-data-service/teardown.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# +# Copyright © 2017 AT&T Intellectual Property. +# Copyright © 2017 Amdocs +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. + + +export SEARCH_LOGS="/opt/aai/logroot/AAI-SEARCH"; +export MTU=$(/sbin/ifconfig | grep MTU | sed 's/.*MTU://' | sed 's/ .*//' | sort -n | head -1); +export DOCKER_REGISTRY="nexus3.onap.org:10001"; + +docker-compose -f docker-compose.yml stop +docker stop stretchy +docker-compose -f docker-compose.yml rm -f -v +docker rm stretchy + +# remove the line we injected into the elastic-search config +sed -i '$ d' appconfig/elastic-search.properties diff --git a/test/csit/plans/aai/search-data-service/testplan.txt b/test/csit/plans/aai/search-data-service/testplan.txt new file mode 100644 index 000000000..b0a72a0f3 --- /dev/null +++ b/test/csit/plans/aai/search-data-service/testplan.txt @@ -0,0 +1,3 @@ +# Test suites are relative paths under [integration.git]/test/csit/tests/. +# Place the suites in run order. +aai/search-data-service/suite1 diff --git a/test/csit/tests/aai/search-data-service/suite1/__init__.robot b/test/csit/tests/aai/search-data-service/suite1/__init__.robot new file mode 100644 index 000000000..f14ab69a0 --- /dev/null +++ b/test/csit/tests/aai/search-data-service/suite1/__init__.robot @@ -0,0 +1,2 @@ +*** Settings *** +Documentation Search Service - Suite 1 diff --git a/test/csit/tests/aai/search-data-service/suite1/private.key b/test/csit/tests/aai/search-data-service/suite1/private.key new file mode 100644 index 000000000..3dd546491 --- /dev/null +++ b/test/csit/tests/aai/search-data-service/suite1/private.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAmxCmMHlTR7FkdYpW3rEPOYEGEuIC2/tBvzOxsBwhk/G4qyJ4 +4nKRYMJp/4inuh75vzqd/guYqs2bgoywM2eVTsGDv7ccVrub61mB8gs5G/Yc8xFe +C9yo8WvV3GBMGSnG2VwZceEDygGmapOY4KK0T6eBUf4UFXE33docQPP4OBzTo/LO +g//FYjQaO+U6y/+pl5cKPorgem78VI82TTo+Kr0z6sPBQy7JpG1j0VaNgy+QwKtG ++VlSgBqysLQEbJFQBugd2TlpbcBnRxVHo0xKUQty8JQWrNpwA5YuB99fdvm+GQ5o +CyaefObEA1XqzS1KqsPoyaODk5xglbhUUqvCNQIDAQABAoIBADRbOsHDNUtPqgvF +2e72+Z0A43wcs7py65ATdDtyRCQfyap+yTIsXMm+2utcyMUfEFRxBkdwwuto4MkD +l7rDjrY4wLNKsFbYoZylbCq9f1rhjoTDqG1449IgBuWR3h/g6zMY1b6NqynZxMbX +bxbp2NfMRu3YTA+xWpuduUx1E6peCssYU+1+jK30tXhY20eqACBjY6DU8MshIxJu +Mrxztz5xtjXsiHru8yDtpPhopgAF07TdwCt9JZq9/t+ZOqPl0AIQxOP+prJ+owVU +nS3yt+QExRsK6Iw9GwoAC0eElDRMnYt957jSxsniOwz1m6po8lkFvblixSQ/OVnt +h86gWUECgYEAyKyeDy72BO+XRVp0mpQa9R2W5f8eZj+ejFRIsE2m0W1LCaFypV+O +JZvYcEGj27qFAH5W9WbTSm8okVbLjRbeUU6FPT1l8hbXNnsiwiU6MRyODIbLhkQG +hHonOfpddsHaUcZe+Hnl3SiSuD/4lPMHYUsQxtnpJI+pcsnuZeYsHAcCgYEAxdD6 +bXLPsjws/RUagph0/yOEEytVUg+plhdmHdihFGuGqHCG/i+eoISX2EfnpyHvYR5m +9LpaJiWiy04nGSZOn3w32kKQhQYkuwYqw6h1/M5ZwR3j6wc2T8gORHxjC8ZT+LlJ +OINvCTBQSWmUxFwJ0C1B9JiJtKNGEZm7GlaP2OMCgYBbBvIrsQGn+4aCzyVVeRlB +Vsq8SZ1ghDtHLHRMhOzG0uzW0YVPvqicJrVnNl89rL3oG2cWqi3t9b5RLy3mMhlm +iFeoD9HOns3AyNpbdseOv4Uv6XUo0nKiZUal5gu/cu+1aGZsD99VErJ7IYmBBzyx +xXs2uGIpU4FpsG+TiXU4wQKBgQCQQtD+1IXnY78jaiqFJw3bq1j8adO1Hrr8PGA6 +T+tY6vmvCTFJWg0C3u+lyPqFhlf+qZ9HxkdMHpJUVdBppOgdowdQYs7mVA6hXeP+ +AHLbRNlr3pKCqiXPlQPiqhvJUH+YmfduAVwOhW9nulnFwaFeckLxT/TNCW1mFIjA +snQBJQKBgQCqH+/K/Dzn0z6vX0APSNM7EBp8ap0qsiLucqGzNxslxwTzinXr5ccl +8bjJxk6+7qUjWaw66wPn+Qs5buxWrKnbf+T5qmEI0bFaBzUBWrVMx1sMdr1Nj69Y +waWRQaZ45y8J9wN+flBFp9d5wo5JWk6w54hHMiHeMmuXDCw5zO2YMA== +-----END RSA PRIVATE KEY----- diff --git a/test/csit/tests/aai/search-data-service/suite1/publickey.crt b/test/csit/tests/aai/search-data-service/suite1/publickey.crt new file mode 100644 index 000000000..5696aa357 --- /dev/null +++ b/test/csit/tests/aai/search-data-service/suite1/publickey.crt @@ -0,0 +1,25 @@ +Bag Attributes + friendlyName: tomcat + localKeyID: 54 69 6D 65 20 31 34 39 33 33 32 33 39 32 32 37 35 31 +subject=/C=CA/ST=Ontario/L=Ottawa/O=ONAP/OU=ONAP/CN=ONAP +issuer=/C=CA/ST=Ontario/L=Ottawa/O=ONAP/OU=ONAP/CN=ONAP +-----BEGIN CERTIFICATE----- +MIIDWTCCAkGgAwIBAgIERWHcIzANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJD +QTEQMA4GA1UECBMHT250YXJpbzEPMA0GA1UEBxMGT3R0YXdhMQ0wCwYDVQQKEwRP +TkFQMQ0wCwYDVQQLEwRPTkFQMQ0wCwYDVQQDEwRPTkFQMB4XDTE3MDQyNzIwMDUz +N1oXDTM3MDExMjIwMDUzN1owXTELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFy +aW8xDzANBgNVBAcTBk90dGF3YTENMAsGA1UEChMET05BUDENMAsGA1UECxMET05B +UDENMAsGA1UEAxMET05BUDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AJsQpjB5U0exZHWKVt6xDzmBBhLiAtv7Qb8zsbAcIZPxuKsieOJykWDCaf+Ip7oe ++b86nf4LmKrNm4KMsDNnlU7Bg7+3HFa7m+tZgfILORv2HPMRXgvcqPFr1dxgTBkp +xtlcGXHhA8oBpmqTmOCitE+ngVH+FBVxN93aHEDz+Dgc06PyzoP/xWI0GjvlOsv/ +qZeXCj6K4Hpu/FSPNk06Piq9M+rDwUMuyaRtY9FWjYMvkMCrRvlZUoAasrC0BGyR +UAboHdk5aW3AZ0cVR6NMSlELcvCUFqzacAOWLgffX3b5vhkOaAsmnnzmxANV6s0t +SqrD6Mmjg5OcYJW4VFKrwjUCAwEAAaMhMB8wHQYDVR0OBBYEFNji+IU70Qgptn4i +boq/rOKNAg8tMA0GCSqGSIb3DQEBCwUAA4IBAQBc5mJLeeUUzJ4MujZjn0DS3Lvv +THJTE54Id1euT3ddzfX3htF0Ewd90YzmLuj1y8r8PXj7b/8Bq+cvoKbmJ42c8h3X +If0tqde+gYWx1X3NAWHwz00Cje9R0KY4Bx1Cvr39jTw/ESnuSQDKPHBnn8WyAS9K +08ZhvrVSK54d3U7tDVut9UVva8Scdi12utTAWaOIlusLo3bU9Z6t+tgg7AnQBYc0 +N9oCMbq/MACFlLSdc1J6NITYS8XHY2RS8u88eLbWkCcEEx1glYz/PMX3+V1Ow9Uy +MjenEx8ifl96ZSOe9XsI2gl2TCaevCY/QuREu4LZB9XmO0gncH7gF5w9Bw2b +-----END CERTIFICATE----- diff --git a/test/csit/tests/aai/search-data-service/suite1/test1.robot b/test/csit/tests/aai/search-data-service/suite1/test1.robot new file mode 100644 index 000000000..db05f83b7 --- /dev/null +++ b/test/csit/tests/aai/search-data-service/suite1/test1.robot @@ -0,0 +1,59 @@ +*** Settings *** +Library OperatingSystem +Library RequestsLibrary +Library requests + +*** Variables *** +${TARGETURL} https://10.147.124.100:9509/services/search-data-service/v1/search/indexes/test-index3 +${INDEXDATA} {"fields": [{"name": "Name", "data-type": "string"}, {"name": "Number", "data-type": "long"}]} +${DOCUMENTDATA} {"Name": "A", "Number": 5} + +*** Test Cases *** +Index Create Test + [Documentation] Create an index and verify success + ${resp}= PutWithCert ${TARGETURL} ${INDEXDATA} + Should Be Equal As Strings ${resp.status_code} 201 + +Insert Document Test + [Documentation] Insert a document into the previously created index + ${resp}= PutWithCert ${TARGETURL}/documents/testdoc ${DOCUMENTDATA} + Should Be Equal As Strings ${resp.status_code} 201 + +Get Document Test + [Documentation] Get the document that was just created + ${resp} GetWithCert ${TARGETURL}/documents/testdoc + ${content}= Evaluate $resp.json().get('content') + ${originaljson}= Evaluate json.loads('${DOCUMENTDATA}') json + Should Be Equal As Strings ${resp.status_code} 200 + Should Be Equal ${content} ${originaljson} + +Delete Index Test + [Documentation] Delete the index + ${resp}= DeleteWithCert ${TARGETURL} + Should Be Equal As Strings ${resp.status_code} 200 + +*** Keywords *** +PutWithCert + [Arguments] ${url} ${data} + ${certinfo}= Evaluate ('${CURDIR}/publickey.crt', '${CURDIR}/private.key') + ${resp}= Evaluate requests.put('${url}', data='${data}', cert=${certinfo}, verify=False) requests + [return] ${resp} + +PostWithCert + [Arguments] ${url} ${data} + ${certinfo}= Evaluate ('${CURDIR}/publickey.crt', '${CURDIR}/private.key') + ${resp}= Evaluate requests.post('${url}', data='${data}', cert=${certinfo}, verify=False) requests + [return] ${resp} + +GetWithCert + [Arguments] ${url} + ${certinfo}= Evaluate ('${CURDIR}/publickey.crt', '${CURDIR}/private.key') + ${resp}= Evaluate requests.get('${url}', cert=${certinfo}, verify=False) requests + [return] ${resp} + +DeleteWithCert + [Arguments] ${url} + ${certinfo}= Evaluate ('${CURDIR}/publickey.crt', '${CURDIR}/private.key') + ${resp}= Evaluate requests.delete('${url}', cert=${certinfo}, verify=False) requests + [return] ${resp} + |