|
| 1 | +#!/bin/bash |
| 2 | +START=`date +%s` |
| 3 | +COOKIE_PATH="/tmp/adc-test-cookie" |
| 4 | +SUCCESS_COUNTER=0 |
| 5 | +TEST_COUNTER=0 |
| 6 | + |
| 7 | +declare -i SUCCESS_COUNTER |
| 8 | +declare -i TEST_COUNTER |
| 9 | + |
| 10 | +function assert_equals { |
| 11 | + TEST_COUNTER=$TEST_COUNTER+1 |
| 12 | + if [[ "$2" = "$1" ]]; then |
| 13 | + SUCCESS_COUNTER=$SUCCESS_COUNTER+1 |
| 14 | + echo -en "\033[0;32m.\033[0m" |
| 15 | + else |
| 16 | + echo -e "\n\033[0;31mTest failed: \033[0;33m$1\033[0;31m doesn't equal \033[0;35m$2\033[0m" |
| 17 | + fi |
| 18 | +} |
| 19 | + |
| 20 | +function assert_contains_substring { |
| 21 | + TEST_COUNTER=$TEST_COUNTER+1 |
| 22 | + if [[ $2 == *$1* ]]; then |
| 23 | + SUCCESS_COUNTER=$SUCCESS_COUNTER+1 |
| 24 | + echo -en "\033[0;32m.\033[0m" |
| 25 | + else |
| 26 | + echo -e "\n\033[0;31mTest failed: Couldn't find \033[0;33m$1\033[0;31m in \033[0;35m$2\033[0m" |
| 27 | + fi |
| 28 | +} |
| 29 | + |
| 30 | +function assert_regex { |
| 31 | + TEST_COUNTER=$TEST_COUNTER+1 |
| 32 | + if [[ $2 =~ $1 ]]; then |
| 33 | + SUCCESS_COUNTER=$SUCCESS_COUNTER+1 |
| 34 | + echo -en "\033[0;32m.\033[0m" |
| 35 | + else |
| 36 | + echo -e "\n\033[0;31mTest failed: Couldn't find \033[0;33m$1\033[0;31m in \033[0;35m$2\033[0m" |
| 37 | + fi |
| 38 | +} |
| 39 | + |
| 40 | +echo "Sourcing user config for controller host and credentials..." |
| 41 | +source "$HOME/.appdynamics/adc/config.sh" |
| 42 | +echo "Will use the following controller for testing: $CONFIG_CONTROLLER_HOST" |
| 43 | + |
| 44 | +ADC="./adc.sh -H $CONFIG_CONTROLLER_HOST -C $CONFIG_CONTROLLER_CREDENTIALS -J $COOKIE_PATH" |
| 45 | +#### BEGIN TESTS #### |
| 46 | + |
| 47 | +##### Test controller functionality ##### |
| 48 | +assert_contains_substring "Pong!" "`${ADC} controller ping`" |
| 49 | +assert_contains_substring "Login Successful" "`${ADC} controller login`" |
| 50 | +assert_contains_substring "<available>true</available>" "`${ADC} controller status`" |
| 51 | +assert_regex "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" "`${ADC} controller version`" |
| 52 | + |
| 53 | +##### List different entities ##### |
| 54 | +assert_contains_substring "<applications>" "`${ADC} application list`" |
| 55 | +assert_contains_substring "<tiers>" "`${ADC} tier list -a 5`" |
| 56 | +assert_contains_substring "<business-transactions>" "`${ADC} bt list -a 5`" |
| 57 | + |
| 58 | +##### Error handling ##### |
| 59 | +assert_equals "Error" "`env CONFIG_HTTP_TIMEOUT=1 ./adc.sh -H 127.0.0.2:8009 controller ping`" |
| 60 | + |
| 61 | +##### Database Collector Create, List, Get, Delete ##### |
| 62 | +CREATE="`${ADC} dbmon create -i adc_test_collector -h localhost -n db -u user -a "Default Database Agent" -t DB2 -p 1555 -s password`" |
| 63 | +assert_contains_substring '"name" : "adc_test_collector",' "$CREATE" |
| 64 | +assert_contains_substring '"name" : "adc_test_collector",' "`${ADC} dbmon list`" |
| 65 | +if [[ $CREATE =~ \"id\"\ \:\ ([0-9]+) ]] ; then |
| 66 | + COLLECTOR_ID=${BASH_REMATCH[1]} |
| 67 | + assert_contains_substring '"name" : "adc_test_collector",' "`${ADC} dbmon get $COLLECTOR_ID`" |
| 68 | + assert_contains_substring '"status" : "SUCCESS",' "`${ADC} dbmon delete $COLLECTOR_ID`" |
| 69 | +fi |
| 70 | + |
| 71 | +#### END TESTS #### |
| 72 | + |
| 73 | +declare -i PERCENTAGE |
| 74 | + |
| 75 | +PERCENTAGE=$((($SUCCESS_COUNTER*100)/($TEST_COUNTER))) |
| 76 | + |
| 77 | +if [ $PERCENTAGE -eq 100 ]; then |
| 78 | + echo -e "\033[0;32m" |
| 79 | +elif [ $PERCENTAGE -ge 80 ]; then |
| 80 | + echo -e "\033[0;33m" |
| 81 | +else |
| 82 | + echo -e "\033[0;31m" |
| 83 | +fi |
| 84 | + |
| 85 | +rm $COOKIE_PATH |
| 86 | +END=`date +%s` |
| 87 | + |
| 88 | +echo -e "\n$SUCCESS_COUNTER/$TEST_COUNTER ($PERCENTAGE%) tests completed in $((END-START))s.\033[0m" |
0 commit comments