Skip to content

Commit dc2a825

Browse files
authored
Merge pull request #154 from esl/amoc-arsenal
Amoc arsenal this PR introduces the following changes: exporting format/2 functin, since it's required for the REST API in amoc-arsenal fixing some functions in integration tests
2 parents 5daada2 + 131f596 commit dc2a825

File tree

7 files changed

+52
-77
lines changed

7 files changed

+52
-77
lines changed

integration_test/helper.sh

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,36 @@ function compile_file() {
1616
erlc -o "$output_dir" "$erl_file"
1717
}
1818

19-
function contains() {
20-
local pipeline='cat -'
19+
function contains_all() {
20+
local output="$(cat -)"
21+
local ret= acc=0
2122
for pattern in "$@"; do
22-
pipeline+=" | tee >(grep -q -e \"$pattern\"; echo \"+\$?\")"
23+
ret="$(echo "$output" | grep -L -e "$pattern" | wc -l)"
24+
if [ "$ret" -ne "0" ]; then
25+
[ "$(($acc))" -eq "0" ] && {
26+
echo "contains_all FAILED"
27+
echo "stdin: '${output}'"; }
28+
echo "pattern is missing: '${pattern}'"
29+
fi >&2
30+
acc+="+${ret}"
2331
done
24-
pipeline+=' >/dev/null'
25-
local output="$(eval "$pipeline")"
26-
test "$(($output))" -eq 0
32+
test "$(($acc))" -eq 0
2733
}
2834

29-
function doesnt_contain() {
30-
local pipeline='cat -'
35+
function doesnt_contain_any() {
36+
local output="$(cat -)"
37+
local ret= acc=0
3138
for pattern in "$@"; do
32-
pipeline+=" | tee >(grep -q -v -e \"$pattern\"; echo \"+\$?\")"
39+
ret="$(echo "$output" | grep -l -e "$pattern" | wc -l || true)"
40+
if [ "$ret" -ne "0" ]; then
41+
[ "$(($acc))" -eq "0" ] && {
42+
echo "doesnt_contain_any FAILED"
43+
echo "stdin: '${output}'"; }
44+
echo "pattern is present: '${pattern}'"
45+
fi >&2
46+
acc+="+${ret}"
3347
done
34-
pipeline+=' >/dev/null'
35-
local output="$(eval "$pipeline")"
36-
test "$(($output))" -eq 0
37-
}
38-
39-
function wait_for_cmd() {
40-
local timeout="${1:-0}"
41-
local cmd="${2:-true}"
42-
shift 2
43-
local full_cmd=("$cmd" "$@")
44-
echo "Waiting for '${full_cmd[@]}'"
45-
for i in $(seq 0 "${timeout}"); do
46-
if "${full_cmd[@]}"; then
47-
[ "$i" -ne 0 ] && echo
48-
echo "Waiting is done after $i seconds"
49-
return 0
50-
fi
51-
echo -n "."
52-
sleep 1
53-
done
54-
echo -e "\nKilled by timeout"
55-
return 1
48+
test "$(($acc))" -eq 0
5649
}
5750

5851
######################
@@ -70,15 +63,6 @@ function amoc_eval() {
7063
docker_compose exec -T "$service" "$exec_path" eval "$@"
7164
}
7265

73-
function container_is_healthy() {
74-
docker_compose ps $1 | contains "healthy"
75-
}
76-
77-
function wait_for_healthcheck() {
78-
local container=$1
79-
wait_for_cmd 60 container_is_healthy "$container"
80-
}
81-
8266
######################
8367
## common variables ##
8468
######################

integration_test/start_test_cluster.sh

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,4 @@ enable_strict_mode
66
compile_file integration_test/extra_code_paths/path1/dummy_helper.erl
77
compile_file integration_test/extra_code_paths/path2/dummy_scenario.erl
88

9-
docker_compose up -d amoc-{master,worker-1,worker-2}
10-
11-
wait_for_healthcheck amoc-master
12-
wait_for_healthcheck amoc-worker-1
13-
wait_for_healthcheck amoc-worker-2
9+
docker_compose up --wait --wait-timeout 100 amoc-{master,worker-1,worker-2}

integration_test/test_add_new_node.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
source "$(dirname "$0")/helper.sh"
44
enable_strict_mode
55

6-
docker_compose up -d amoc-worker-3
7-
wait_for_healthcheck amoc-worker-3
6+
docker_compose up --wait --wait-timeout 100 amoc-worker-3
87

9-
amoc_eval amoc-worker-3 "amoc_controller:get_status()." | contains dummy_scenario running
10-
amoc_eval amoc-worker-3 "binary_to_list(amoc_config:get(test))." | contains "test_value"
11-
amoc_eval amoc-worker-3 "dummy_helper:test_amoc_dist()." | contains 'amoc_dist_works_as_expected'
8+
amoc_eval amoc-worker-3 "amoc_controller:get_status()." | contains_all dummy_scenario running
9+
amoc_eval amoc-worker-3 "binary_to_list(amoc_config:get(test))." | contains_all "test_value"
10+
amoc_eval amoc-worker-3 "dummy_helper:test_amoc_dist()." | contains_all 'amoc_dist_works_as_expected'
1211
echo "amoc_dist_works_as_expected"

integration_test/test_amoc_cluster.sh

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ source "$(dirname "$0")/helper.sh"
44
enable_strict_mode
55

66
echo "checking that clustering is done properly"
7-
amoc_eval amoc-master "nodes()." | contains amoc-worker-1 amoc-worker-2
8-
amoc_eval amoc-worker-1 "nodes()." | contains amoc-master amoc-worker-2
9-
amoc_eval amoc-worker-2 "nodes()." | contains amoc-master amoc-worker-1
7+
amoc_eval amoc-master "nodes()." | contains_all amoc-worker-1 amoc-worker-2
8+
amoc_eval amoc-worker-1 "nodes()." | contains_all amoc-master amoc-worker-2
9+
amoc_eval amoc-worker-2 "nodes()." | contains_all amoc-master amoc-worker-1
1010

11-
echo "checking that AMOC_EXTRA_CODE_PATHS setting works as expected"
12-
amoc_eval amoc-master "amoc_code_server:list_scenario_modules()." | contains dummy_scenario
13-
amoc_eval amoc-master "amoc_code_server:list_configurable_modules()." | contains dummy_helper
14-
amoc_eval amoc-worker-1 "amoc_code_server:list_scenario_modules()." | doesnt_contain dummy_scenario
15-
amoc_eval amoc-worker-1 "amoc_code_server:list_configurable_modules()." | doesnt_contain dummy_helper
16-
amoc_eval amoc-worker-2 "amoc_code_server:list_scenario_modules()." | doesnt_contain dummy_scenario
17-
amoc_eval amoc-worker-2 "amoc_code_server:list_configurable_modules()." | doesnt_contain dummy_helper
11+
echo "checking that setting AMOC_EXTRA_CODE_PATHS env works as expected"
12+
amoc_eval amoc-master "amoc_code_server:list_scenario_modules()." | contains_all dummy_scenario
13+
amoc_eval amoc-master "amoc_code_server:list_configurable_modules()." | contains_all dummy_helper
14+
amoc_eval amoc-worker-1 "amoc_code_server:list_scenario_modules()." | doesnt_contain_any dummy_scenario
15+
amoc_eval amoc-worker-1 "amoc_code_server:list_configurable_modules()." | doesnt_contain_any dummy_helper
16+
amoc_eval amoc-worker-2 "amoc_code_server:list_scenario_modules()." | doesnt_contain_any dummy_scenario
17+
amoc_eval amoc-worker-2 "amoc_code_server:list_configurable_modules()." | doesnt_contain_any dummy_helper

integration_test/test_distribute_scenario.sh

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,21 +56,21 @@ function distribute_modules() {
5656
amoc_eval "${1}" "amoc_code_server:distribute_modules('amoc@${2}')."
5757
}
5858

59-
ensure_modules_loaded amoc-master "${modules[@]}" | contains "${modules[@]}"
60-
ensure_modules_loaded amoc-worker-1 "${modules[@]}" | doesnt_contain "${modules[@]}"
61-
ensure_modules_loaded amoc-worker-2 "${modules[@]}" | doesnt_contain "${modules[@]}"
59+
ensure_modules_loaded amoc-master "${modules[@]}" | contains_all "${modules[@]}"
60+
ensure_modules_loaded amoc-worker-1 "${modules[@]}" | doesnt_contain_any "${modules[@]}"
61+
ensure_modules_loaded amoc-worker-2 "${modules[@]}" | doesnt_contain_any "${modules[@]}"
6262

63-
list_scenarios_and_helpers amoc-worker-2 | doesnt_contain "${modules[@]}"
64-
list_scenarios_and_helpers amoc-worker-1 | doesnt_contain "${modules[@]}"
63+
list_scenarios_and_helpers amoc-worker-2 | doesnt_contain_any "${modules[@]}"
64+
list_scenarios_and_helpers amoc-worker-1 | doesnt_contain_any "${modules[@]}"
6565

6666
echo "Distributing scenario and helper module from the amoc-master node"
6767
## amoc_controller is added to the list as an example of module
6868
## that already exists on all the slave amoc nodes
6969
add_module amoc-master "${modules[@]}" amoc_controller
70-
distribute_modules amoc-master amoc-worker-1 | contains "${modules[@]}" amoc_controller
70+
distribute_modules amoc-master amoc-worker-1 | contains_all "${modules[@]}" amoc_controller
7171

72-
ensure_modules_loaded amoc-worker-1 "${modules[@]}" | contains "${modules[@]}"
73-
ensure_modules_loaded amoc-worker-2 "${modules[@]}" | doesnt_contain "${modules[@]}"
72+
ensure_modules_loaded amoc-worker-1 "${modules[@]}" | contains_all "${modules[@]}"
73+
ensure_modules_loaded amoc-worker-2 "${modules[@]}" | doesnt_contain_any "${modules[@]}"
7474

75-
list_scenarios_and_helpers amoc-worker-1 | contains "${modules[@]}"
76-
list_scenarios_and_helpers amoc-worker-2 | doesnt_contain "${modules[@]}"
75+
list_scenarios_and_helpers amoc-worker-1 | contains_all "${modules[@]}"
76+
list_scenarios_and_helpers amoc-worker-2 | doesnt_contain_any "${modules[@]}"

integration_test/test_run_scenario.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ result="$(run_scenario amoc-master dummy_scenario 10)"
1414

1515
echo "$result"
1616

17-
if echo "$result" | contains "ok" "'amoc@amoc-worker-1'" "'amoc@amoc-worker-2'" ; then
17+
if echo "$result" | contains_all "ok" "'amoc@amoc-worker-1'" "'amoc@amoc-worker-2'" ; then
1818
echo "Scenario executed"
1919
exit 0
2020
else

src/amoc_config/amoc_config_parser.erl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,9 @@
99

1010
-export([parse_value/1]).
1111

12-
-ifdef(TEST).
13-
%% exported for testing only
12+
%% format/2 is exported for testing purposes
13+
%% it is also re-used by amoc-arsenal
1414
-export([format/2]).
15-
-else.
16-
-ignore_xref([format/2]).
17-
-dialyzer({nowarn_function, [format/2]}).
18-
-endif.
1915

2016
%% ------------------------------------------------------------------
2117
%% API

0 commit comments

Comments
 (0)