-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathtest.sh
executable file
·135 lines (109 loc) · 3.23 KB
/
test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env bash
# Copyright 2022 Red Hat, Inc
#
# 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.
COLORS_RED='\033[0;31m'
COLORS_RESET='\033[0m'
VERBOSE_OUTPUT=true
echo bash version is:
bash --version
if [[ $* == *verbose* ]] || [[ -n "${VERBOSE}" ]]; then
# print all possible logs
LOG_LEVEL=""
VERBOSE_OUTPUT=true
fi
function cleanup() {
print_descendent_pids() {
pids=$(pgrep -P "$1")
echo "$pids"
for pid in $pids; do
print_descendent_pids "$pid"
done
}
echo Exiting and killing all children...
children=$(print_descendent_pids $$)
# disable the message when you send stop signal to child processes
set +m
for pid in $(echo -en "$children"); do
# nicely asking a process to commit suicide
if ! kill -PIPE "$pid" &>/dev/null; then
# we even gave them plenty of time to think
sleep 1
fi
done
# restore the message back since we want to know that process wasn't stopped correctory
# set -m
for pid in $(echo -en "$children"); do
# murdering those who're alive
kill -9 "$pid" &>/dev/null
done
sleep 1
}
trap cleanup EXIT
go clean -testcache
if go build -race; then
echo "Service build ok"
else
echo "Build failed"
exit 1
fi
function start_service() {
echo "Starting a service"
INSIGHTS_OPERATOR_GATHERING_CONDITIONS_SERVICE_CONFIG_FILE=./tests/config \
./insights-operator-gathering-conditions-service ||
echo -e "${COLORS_RED}service exited with error${COLORS_RESET}" &
# shellcheck disable=2181
if [ $? -ne 0 ]; then
echo "Could not start the service"
exit 1
fi
}
function test_rest_api() {
start_service
sleep 1
echo "Building REST API tests utility"
if go build -o rest-api-tests tests/rest_api_tests.go; then
echo "REST API tests build ok"
else
echo "Build failed"
return 1
fi
curl http://localhost:8081/openapi.json > /dev/null || {
echo -e "${COLORS_RED}server is not running(for some reason)${COLORS_RESET}"
exit 1
}
OUTPUT=$(./rest-api-tests 2>&1)
EXIT_CODE=$?
if [ "$VERBOSE_OUTPUT" = true ]; then
echo "$OUTPUT"
else
echo "$OUTPUT" | grep -v -E "^Pass "
fi
return $EXIT_CODE
}
echo -e "------------------------------------------------------------------------------------------------"
case $1 in
rest_api)
test_rest_api
EXIT_VALUE=$?
;;
*)
# all tests
# exit value will be 0 if every test returned 0
EXIT_VALUE=0
test_rest_api
EXIT_VALUE=$((EXIT_VALUE + $?))
;;
esac
echo -e "------------------------------------------------------------------------------------------------"
exit $EXIT_VALUE