From 2ce4ce233e1f99c0c79eef3ab8df0d237d737b92 Mon Sep 17 00:00:00 2001 From: Ulas Kozat Date: Tue, 12 Jul 2016 10:45:43 -0700 Subject: add new multi node test script and deployment ssh keys Change-Id: I7b258c2b440211d03a07c89c70e90c62a29a6718 Signed-off-by: Ulas Kozat --- tests/run_multinode.sh | 169 ++++++++++++++++++++++++++++++++++++++++++ tests/testkeys/id_rsa | 27 +++++++ tests/testkeys/id_rsa.pub | 1 + tests/testkeys/old/id_rsa | 30 ++++++++ tests/testkeys/old/id_rsa.pub | 1 + 5 files changed, 228 insertions(+) create mode 100755 tests/run_multinode.sh create mode 100644 tests/testkeys/id_rsa create mode 100644 tests/testkeys/id_rsa.pub create mode 100644 tests/testkeys/old/id_rsa create mode 100644 tests/testkeys/old/id_rsa.pub diff --git a/tests/run_multinode.sh b/tests/run_multinode.sh new file mode 100755 index 0000000..4647899 --- /dev/null +++ b/tests/run_multinode.sh @@ -0,0 +1,169 @@ +#!/bin/bash -ex + +#Copyright 2016 Open Platform for NFV Project, Inc. and its contributors +# 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. + +USERNAME=ubuntu +SSH_KEY_PATH=/home/opnfv/.ssh/id_rsa +DOMINO_CODE_PATH=/home/opnfv/repos/domino +CONTROLLER_NODE_1=192.168.2.165 +CONTROLLER_NODE_2=192.168.2.180 +CONTROLLER_NODE_3=192.168.2.181 + +CLIENT1_PORT=9091 +CLIENT2_PORT=9092 +CLIENT1_CLIPORT=9100 +CLIENT2_CLIPORT=9200 +LOGLEVEL=DEBUG + +toscafile_test1=./tosca-templates/tosca_helloworld_nfv.yaml +test1_reffile1=./tests/refdata/test1_client1.ref +test1_reffile2=./tests/refdata/test1_client2.ref +client1_log=./tests/logdata/client1.log +client2_log=./tests/logdata/client2.log +server_log=./tests/logdata/server.log + +install_dependency() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'sudo pip install tosca-parser' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'sudo pip install heat-translator' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'sudo pip install tosca-parser' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'sudo pip install heat-translator' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'sudo pip install tosca-parser' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'sudo pip install heat-translator' +} + +remove_codes(){ + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'rm -rf domino' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'rm -rf domino' + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'rm -rf domino' +} + +deploy_codes(){ + scp -i "$SSH_KEY_PATH" -r "$DOMINO_CODE_PATH" "$USERNAME"@"$CONTROLLER_NODE_1":. + scp -i "$SSH_KEY_PATH" -r "$DOMINO_CODE_PATH" "$USERNAME"@"$CONTROLLER_NODE_2":. + scp -i "$SSH_KEY_PATH" -r "$DOMINO_CODE_PATH" "$USERNAME"@"$CONTROLLER_NODE_3":. +} + +start_server() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'pgrep -f "python DominoServer.py"' && return 0 + ssh -f -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" "sh -c 'cd ./domino; nohup python DominoServer.py --log "$LOGLEVEL" > "$server_log" > /dev/null 2>&1 &'" +} + +start_client1() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'pgrep -f "python DominoClient.py"' && return 0 + ssh -f -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd ./domino; nohup python DominoClient.py -p $CLIENT1_PORT --cliport $CLIENT1_CLIPORT --ipaddr $CONTROLLER_NODE_1 --log "$LOGLEVEL" > "$client1_log" > /dev/null 2>&1 &'" +} + +start_client2() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'pgrep -f "python DominoClient.py"' && return 0 + ssh -f -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" "sh -c 'cd ./domino; nohup python DominoClient.py -p $CLIENT2_PORT --cliport $CLIENT2_CLIPORT --ipaddr $CONTROLLER_NODE_1 --log "$LOGLEVEL" > "$client2_log" > /dev/null 2>&1 &'" +} + +stop_server() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'pgrep -f "python DominoServer.py"' || return 0 + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'kill $(pgrep -f "python DominoServer.py")' +} + +stop_client1() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'pgrep -f "python DominoClient.py"' || return 0 + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'kill $(pgrep -f "python DominoClient.py")' +} + +stop_client2() { + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'pgrep -f "python DominoClient.py"' || return 0 + ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'kill $(pgrep -f "python DominoClient.py")' +} + +cleanup() { + set +e + echo "cleanup..." + + echo "Stopping Domino Clients..." + stop_client1 + stop_client2 + + echo "Stopping Domino Server..." + stop_server + sleep 1 +} + +prepare_testenv() { + install_dependency + remove_codes + deploy_codes +} + +launch_domino() { + echo "Launching Domino Server..." + start_server + sleep 1 + echo "Launching Domino Client 1..." + start_client1 + sleep 1 + echo "Launching Domino Client 2..." + start_client2 + sleep 1 +} + +echo "domino/tests/run_multinode.sh has been executed." + +trap cleanup EXIT + +cleanup +prepare_testenv +launch_domino + + +echo "Test Heartbeat" +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT heartbeat' +sleep 1 + +echo "Test Subscribe API" +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe -t hot \ + -l tosca.policies.Placement:properties:region:nova-1' +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe -t dummy1,dummy2 --top OVERWRITE' +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe -t dummy1,dummy2 --top DELETE' +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement:properties:region:nova-2' +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement:properties:region:nova-3 \ + --lop OVERWRITE' +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement:properties:region:nova-3 \ + --lop DELETE' +sleep 1 + +echo "Test Publish API" +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT publish -t "$toscafile_test1"' + +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" \ + 'python domino-cli.py $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement.Geolocation:properties:region:us-west-1' +sleep 1 +ssh -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" \ + 'python domino-cli.py $CLIENT2_CLIPORT publish -t "$toscafile_test1"' + +echo "done" + diff --git a/tests/testkeys/id_rsa b/tests/testkeys/id_rsa new file mode 100644 index 0000000..2b8996f --- /dev/null +++ b/tests/testkeys/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAz3sCcPXs6a4iDU3ZTqi5waoevJ7SJduhdA4ReinT2Q7Dw1Rb +1GeR8SVdbd8gakOSab1Dd3OyhB/sMZBHIX5Gq0y+3pCL1BfkP9M45irQUIrXq7ZX +MkEqbHPM7rwNodmGJyVq5ArfqG16FsTdgEL9Xn5K6/i0Lha/Y+/TkXacAe0tndsg +wsDndEfMcaRHzG4isDRljADQ55Ta/QqAmIVNSSBOIvcVK2yKA07X2KlSQVaOI2W+ +qsfRCmOEq89oRKC9Ye8Tjhtl1FYUOdBSOlyueNENV2uVV1tfhUD4PXsO7shtb0eE +sFkQZReAg4klsaPqlxvxC4KLBaLnD7K4kp0ZRQIDAQABAoIBAGVE8SgZoQ1eBRjh +SpPuHty8IEyIaKI51VBEHZu3FsP3RO3uGvRNqRo+1p9uLPAxEyGxU2DWg+ehfTOj +7FQYwn2R9AfGHbnj/3B3tGoDs7HcUvBpC55n2EEfNIPCHhVFiwlIZifwdsJKzTCX +3lVgXTLmCcOrnKZyS/CHeoihj/wP2rrz1yptcbjzptdnBvsB2k+5dC4bEuSzrCbn +3XA1iX/bdtf29LFkunmkzgkVwkFVxEoo2BTLkmZmdYm7qoNIMXYruMmTrAfNj8fT +5WnreOIFcbuwjgc8+dNddhDwma3ozYOO1sOKlFO79KQdba5IRfKQNARexj8zaerT +eBUqoHECgYEA9E9C/zipI5MQ+HW+sTT2gMf74WG8FYq+tfGeTicfmnXJvpGYNAom +xyy4nr2M6jAOthPR/iqlLMLCXrVHtOav3E7dGOfK+pVjMVw06oHHTssQuW1SFUFX +bL5xZu4tEpemE6V2CH2Px6jnYjP05YSmF8L+Pv4+GQ3D/K4YbVrJ868CgYEA2WiZ +dWSJsdZ6qcSIem/UbLj5EbnIxf4PeKvd3nFfmkLcOKjqxECZ016UXnLjt/HYPLUJ +wyT3yLnHBNxuP8ev21uBAUw6irfIBoQScqeT+YxofSMH2RS+L4hccOT4r0ylef1S +oo/NaitMo1oolHc2MeGsAA98YZgkPp5ySZzE20sCgYEAzvuoI1r50a3zns0C9leM +0Kad++E13HpkAPnnyQbUe6R3fAEWFmDTYcO91p95F6AHlrNMIi43KqkGy/6B9f3L +2LboEwWuroaKN3OLUXMKTPM2BCNee6uUSgk/QplfjnT0u4hfa+oVOm8bOdQTE7FC +lrcZeH0mV0uWVCmbgGp+1vkCgYAIkLxrCZj7Lq4Kfjm6SSmfVvJJJn6ofkfxwyOs +nd7cXwH6IX2OWdU1pKZHylL6bkbMrX1C+PPiLp+Oq3iUfrOI+uPsPyqXSIJS72Ui +q0ODM2rycyzd+pk7mi26LOs3TNfAJKDa0ruPEUGltemfX8r80B1Mq0+FMM9MwEVU +bR68XQKBgEJbgmlPzgBgQSj2V7yQ2xFiN9PQ58qgIOcfAKX4zO3WipQWwPpg5ePS +6JSI68hvaqnY7825Qw9pAwqAQmBMNHe8Tis85Hk9L4XbeGR10/2quS1/zKB6cE0s +ixWytAw5fxdU6KIvhdR9stATikcXOqEBgc95pZIsNeey6yjNOFM6 +-----END RSA PRIVATE KEY----- diff --git a/tests/testkeys/id_rsa.pub b/tests/testkeys/id_rsa.pub new file mode 100644 index 0000000..0a282b7 --- /dev/null +++ b/tests/testkeys/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPewJw9ezpriINTdlOqLnBqh68ntIl26F0DhF6KdPZDsPDVFvUZ5HxJV1t3yBqQ5JpvUN3c7KEH+wxkEchfkarTL7ekIvUF+Q/0zjmKtBQitertlcyQSpsc8zuvA2h2YYnJWrkCt+obXoWxN2AQv1efkrr+LQuFr9j79ORdpwB7S2d2yDCwOd0R8xxpEfMbiKwNGWMANDnlNr9CoCYhU1JIE4i9xUrbIoDTtfYqVJBVo4jZb6qx9EKY4Srz2hEoL1h7xOOG2XUVhQ50FI6XK540Q1Xa5VXW1+FQPg9ew7uyG1vR4SwWRBlF4CDiSWxo+qXG/ELgosFoucPsriSnRlF kozat@Kozat-MacBook-Pro.local diff --git a/tests/testkeys/old/id_rsa b/tests/testkeys/old/id_rsa new file mode 100644 index 0000000..646c190 --- /dev/null +++ b/tests/testkeys/old/id_rsa @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-128-CBC,16BD7B6B8BF0F8D0E954397B477C7BC1 + +NmwVRQcPKJQLDS5Ainwf718QUZqMfzuTKldc4d0MFbA/fB9tYBxk5Mge0ftv3T0f +zrn2KfqB2cbLO/Ncxge4OpfHUeT7mJsOiqsarZF+OKqs7S38iRRIY2LNw9gjHXON +kqtf8YbMuqKT3P6Bd1wdApKp+N6WAq59whPO+FG2q7KISWx9xVr4vpnMRFaVUafx +LoOuP0AHevbBmdh7wqI/cPnr/VnRFmT0GkMzeXpA6IKzkIu29hLosSqyOuL8KCLa +Yi0Re9oxahdxvQga2qEmh1P6LfEvEpZasdBUXUXeXgJWdfUDfZMU0cHHmfbBZ3xK +vPDsdvatcXS5Gx5EAFitWmo9yrpNnAUblDu5xaex4eE22tfzaZCMVih9u0YqkQIS +YDxIjSqqjfvd46mwog1fSu0qRgy+hxvh/ZRa3NYcPKl6GxjN9MOuEEhYHqz0rOYu +JZrTESpkGBoBqIPp7n3DWVQtcsAw0xIQAWrIT9/t2jfBOZ+4AQ1MZWs/g9mPEE5g +oH3VCt7+hBTSBOGFwiq45dzGgoB1YJYq7hUSGelokw2SKqjgORgJDE9AM7nRsELr +9EReAGGTjBRPmlCkhDzIuhdYn3oBqqMHe5UlsCNJFu5r5TLWYw6bK6IN7gAg/f86 +CPABMGOwN+2vDWUIBt5PlEQbBFw4SQ3CimHgE+naqohEh8+K8lbD+Nj8mSdKcCQd +/Wabf0xbXqVuhD7/fJXd3LcDdd9w6OEOsMfSKC6OfhD6GzE3DFCJv9EGu2iDc2ZT +2rUFGjJ/xffTlcHYmq3w3rEg6twWeJet5gPZW6Q2rommEjMt2+uAsP9ekjubaVkM +hoHQaCXXhJmqn1d7WuTsICUl7Eu8dHp/h5iJgEF/Snj5F+ZwZPlWCVwPjjT32vPV +rq9+ZEme4Uc+r36xGdfzYo4Wf93MnCL80bshHad+5hgA36KBM71m9GEj/bfNdX+a +UI4F23PKlPzt2338yK8RMaJ4szHppAF+NNcWKjID+KUA5zCpkMAG7ka8wSg1kS9Z +p74bhLmFDDWNNsVfcQNhZUYMKSWMnQl0NXVwDrE/Tfa7Llf/vqER0LTHr+qWkobP +yTO98InqqOr4bs0OTyMjIagjgLq2HEsGq23HYF7nYeiEZVat/dRihX/idQWJ765L +MWLpnnAao7F3xUXb3iF44ru/qNsWDAS/Ppx2tSYJ6iSn8OUy5a1dvNjV3n4P80Dv +VPDswhuLqke87UppNSMW9IJA8EoVFCQBXXrfSNhdr2SsHWDlFDFhYbnZ6en4eK4O +pwpEvp3yEc+DbH6ZJCU3MUcT+tlMuQ7e+qd/DOF3AaeIYh+xKXvF2wuby/IZ3/iY +FIzvGQ5m1f5fXtf+r43Qu/8oN7ATPJ7WmFzUZ7GoJZVKfeZFYgnLcClUqyI1uSgS ++X28aJKy9qukPFBkmbX7rLm3BqzBVrWUFiwBMymuRZ3rcu0OvoKEvv5eHai+blMZ +N3aKfE7rqnXnAjqwzL37NXEklwPt70E4VPdmjZigOQDV3FKRTqAfjonhprRaCwUW +AwwydAYd0u+wd3TZSiJ4mwpB9OfxfZ8LHwG+4X416YG91V+vMaXzvq8oLtljFN7h +-----END RSA PRIVATE KEY----- diff --git a/tests/testkeys/old/id_rsa.pub b/tests/testkeys/old/id_rsa.pub new file mode 100644 index 0000000..62faf79 --- /dev/null +++ b/tests/testkeys/old/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZyMY7XtH1tvGwIYbGiolWvrH5CXlJEk29O/FMlZvI3dKrvn+AotItUUwyv9pdGy+XAknubIvnixxaWjyXzmpZfTmoYB9UpoY4X5f2A4zyhS6zTAoZO0FrD5ssGL6peao/2dt/DGGSovXqEdiNDq5y+BbozrEhaJl6z2iEjfEOyyt3opqzc3k1Cqq7GFlIfEbJQHVRuEZ+U3fP9JDvRosDEH2m6ZSobwyswhXL+n2c68KoCQeykMQ2NuK77WqF6+FdQ5pCcpGhVbJioO2/c3I/rMQ1DlHIne9VkislPGR+2d/ENBke76FQJX5eV6GMdoLt9L0vuOlQ/FZyHSQPlKCn kozat@Kozat-MacBook-Pro.local -- cgit 1.2.3-korg