X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Frun_multinode.sh;h=736d991fef59d0bac3511fead3bcb2e492248685;hb=refs%2Fheads%2Fmaster;hp=4f4f075ecf6aee4c8908fd01228a9a0065541fe3;hpb=ed9b907664460e2f25be919a2c427457598b909e;p=domino.git diff --git a/tests/run_multinode.sh b/tests/run_multinode.sh index 4f4f075..235eaf1 100755 --- a/tests/run_multinode.sh +++ b/tests/run_multinode.sh @@ -11,159 +11,172 @@ # See the License for the specific language governing permissions and # limitations under the License. -IS_IPandKEY_CONFIGURED=false -USERNAME=ubuntu -#SSH_KEY_PATH=/home/opnfv/repos/domino/tests/testkeys/id_rsa -#DOMINO_CODE_PATH=/home/opnfv/repos/domino -SSH_KEY_PATH=./tests/testkeys/id_rsa -DOMINO_CODE_PATH=../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 -ssh_opts="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" - -install_dependency() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'sudo pip install tosca-parser' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'sudo pip install heat-translator' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'sudo pip install tosca-parser' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'sudo pip install heat-translator' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'sudo pip install tosca-parser' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'sudo pip install heat-translator' -} +dir=$(python -c "import sysconfig; print sysconfig.get_path('platlib')") +toscafile_test1=${dir}/tosca-templates/tosca_helloworld_nfv.yaml +test1_reffile1=${dir}/tests/refdata/test1_client1.ref +test1_reffile2=${dir}/tests/refdata/test1_client2.ref +client1_log=${dir}/tests/logdata/client1.log +client2_log=${dir}/tests/logdata/client2.log +server_log=${dir}/tests/logdata/server.log -remove_codes(){ - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'rm -rf domino' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'rm -rf domino' - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'rm -rf domino' -} -deploy_codes(){ - scp $ssh_opts -i "$SSH_KEY_PATH" -r "$DOMINO_CODE_PATH" "$USERNAME"@"$CONTROLLER_NODE_1":. - scp $ssh_opts -i "$SSH_KEY_PATH" -r "$DOMINO_CODE_PATH" "$USERNAME"@"$CONTROLLER_NODE_2":. - scp $ssh_opts -i "$SSH_KEY_PATH" -r "$DOMINO_CODE_PATH" "$USERNAME"@"$CONTROLLER_NODE_3":. +start_server() { + pgrep -f "DominoServer" && return 0 + DominoServer --log "$LOGLEVEL" > "$server_log" 2>&1 & } -start_server() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'pgrep -f "python DominoServer.py"' && return 0 - ssh $ssh_opts -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 &'" +stop_server() { + pgrep -f "DominoServer" || return 0 + kill $(pgrep -f "DominoServer") + #cat server.log } start_client1() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'pgrep -f "python DominoClient.py"' && return 0 - ssh $ssh_opts -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 &'" + #pgrep -f "DominoClient -p $CLIENT1_PORT" && return 0 + DominoClient -p $CLIENT1_PORT --cliport $CLIENT1_CLIPORT \ + --log "$LOGLEVEL" > "$client1_log" 2>&1 & } start_client2() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'pgrep -f "python DominoClient.py"' && return 0 - ssh $ssh_opts -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 &'" + #pgrep -f "DominoClient -p $CLIENT2_PORT" && return 0 + DominoClient -p $CLIENT2_PORT --cliport $CLIENT2_CLIPORT \ + --log "$LOGLEVEL" > "$client2_log" 2>&1 & } -stop_server() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'pgrep -f "python DominoServer.py"' || return 0 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_1" 'kill $(pgrep -f "python DominoServer.py")' +stop_clients() { + pgrep -f "DominoClient" || return 0 + kill $(pgrep -f "DominoClient") + #cat client1.log } -stop_client1() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'pgrep -f "python DominoClient.py"' || return 0 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" 'kill $(pgrep -f "python DominoClient.py")' -} +clean_directories() { + if [ -f dominoserver.db ]; then + rm dominoserver.db + fi -stop_client2() { - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'pgrep -f "python DominoClient.py"' || return 0 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" 'kill $(pgrep -f "python DominoClient.py")' + if [ -d toscafiles ]; then + rm -rf toscafiles + fi } cleanup() { - chmod 600 "$SSH_KEY_PATH" set +e echo "cleanup..." echo "Stopping Domino Clients..." - stop_client1 - sleep 1 - stop_client2 - sleep 1 - + stop_clients + echo "Stopping Domino Server..." stop_server - sleep 1 -} -prepare_testenv() { - chmod 600 "$SSH_KEY_PATH" - install_dependency - remove_codes - deploy_codes -} + if [ -f file1 ]; then + rm file1 + fi -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 + if [ -f file2 ]; then + rm file2 + fi } -echo "domino/tests/run_multinode.sh has been executed." +echo "domino/tests/run.sh has been executed." trap cleanup EXIT -if [ "$IS_IPandKEY_CONFIGURED" = "true" ]; then - - cleanup - prepare_testenv - launch_domino - - - echo "Test Heartbeat" - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT heartbeat'" - sleep 1 - - echo "Test Subscribe API" - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -t hot -l tosca.policies.Placement:properties:region:nova-1'" - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -t dummy1,dummy2 --top OVERWRITE'" - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -t dummy1,dummy2 --top DELETE'" - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -l tosca.policies.Placement:properties:region:nova-2'" - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -l tosca.policies.Placement:properties:region:nova-3 --lop OVERWRITE'" - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -l tosca.policies.Placement:properties:region:nova-3 --lop DELETE'" - sleep 1 - - echo "Test Publish API" - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" "sh -c 'cd domino; python domino-cli.py $CLIENT2_CLIPORT publish -t "$toscafile_test1"'" - - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_2" "sh -c 'cd domino; python domino-cli.py $CLIENT1_CLIPORT subscribe -l tosca.policies.Placement.Geolocation:properties:region:us-west-1'" - sleep 1 - ssh $ssh_opts -i "$SSH_KEY_PATH" "$USERNAME"@"$CONTROLLER_NODE_3" "sh -c 'cd domino; python domino-cli.py $CLIENT2_CLIPORT publish -t "$toscafile_test1"'" - - echo "done" - +echo "Terminating any running Domino Clients..." +stop_clients + +echo "Terminating any running Domino Servers..." +stop_server +sleep 1 + +echo "Cleaning residue files and folders from previous runs..." +clean_directories +sleep 1 + +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 "Test Heartbeat" +domino_cli $CLIENT1_CLIPORT heartbeat +sleep 1 + +echo "Test Subscribe API" +domino_cli $CLIENT1_CLIPORT subscribe -t hot \ + -l tosca.policies.Placement:properties:region:nova-1 +sleep 1 +domino_cli $CLIENT1_CLIPORT subscribe -t dummy1,dummy2 --top OVERWRITE +sleep 1 +domino_cli $CLIENT1_CLIPORT subscribe -t dummy1,dummy2 --top DELETE +sleep 1 +domino_cli $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement:properties:region:nova-2 +sleep 1 +domino_cli $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement:properties:region:nova-3 \ + --lop OVERWRITE +sleep 1 +domino_cli $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement:properties:region:nova-3 \ + --lop DELETE +sleep 1 + +echo "Test Publish API" +domino_cli $CLIENT1_CLIPORT publish -t "$toscafile_test1" + +sleep 1 +domino_cli $CLIENT1_CLIPORT subscribe \ + -l tosca.policies.Placement.Geolocation:properties:region:us-west-1 +sleep 1 +domino_cli $CLIENT2_CLIPORT publish -t "$toscafile_test1" +sleep 1 +TUID=$(domino_cli $CLIENT2_CLIPORT list-tuids | cut -c3-34) +echo $TUID +sleep 1 +domino_cli $CLIENT2_CLIPORT publish -t "$toscafile_test1" -k "$TUID" + +#echo "Stopping Domino Client 1..." +#stop_client1 + +#echo "Stopping Domino Server..." +#stop_server + +cut -d " " -f 4- "$client1_log" > file1 +cut -d " " -f 4- "$client2_log" > file2 +#will use the form below to declare success or failure +set +e + +diff -q file1 "$test1_reffile1" 1>/dev/null +if [[ $? == "0" ]] +then + echo "Log1 PASS" else + echo "Log1 FAIL" +fi - echo "set IS_IPandKEY_CONFIGURED as true to run the test" - +diff -q file2 "$test1_reffile2" 1>/dev/null +if [[ $? == "0" ]] +then + echo "Log2 PASS" +else + echo "Log2 FAIL" fi +set -e +echo "done" +exit 0