Skip to content

Commit 1f7f240

Browse files
authored
Add a bin script to handle signals with parallel_tests (#76)
1 parent 3e7d775 commit 1f7f240

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

bin/knapsack_pro_all.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
'./bin/knapsack_pro_queue_rspec_encrypted' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
5151
'./bin/knapsack_pro_fixed_queue_split_rspec_encrypted' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
5252
'./bin/parallel_tests_knapsack_pro_queue_rspec' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
53+
'./bin/parallel_tests_knapsack_pro_queue_rspec_handle_signals' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
5354
'./bin/parallel_tests_knapsack_pro_single_machine_run BUILD_ID' => [''],
5455
'./bin/bin_knapsack_pro_rspec' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
5556
'./bin/bin_knapsack_pro_queue_rspec' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],

bin/parallel_tests_handle_signals

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
3+
handle_signal() {
4+
local signal=$1
5+
if [[ -n $knapsack_pro_pid ]]; then
6+
echo "KNAPSACK_PRO_CI_NODE_INDEX=$KNAPSACK_PRO_CI_NODE_INDEX Received signal $signal in bin/parallel_tests, terminating the Knapsack Pro process with TERM"
7+
kill -TERM $knapsack_pro_pid
8+
echo "KNAPSACK_PRO_CI_NODE_INDEX=$KNAPSACK_PRO_CI_NODE_INDEX Waiting for the Knapsack Pro process with PID $knapsack_pro_pid to terminate"
9+
wait $knapsack_pro_pid
10+
fi
11+
}
12+
13+
trap 'handle_signal TERM' TERM
14+
trap 'handle_signal INT' INT
15+
16+
# The Knapsack Pro API sees 3 * 2 = 6 parallel nodes
17+
export KNAPSACK_PRO_CI_NODE_TOTAL=$(( $PARALLEL_TESTS_CONCURRENCY * $KNAPSACK_PRO_CI_NODE_TOTAL ))
18+
19+
if [ "$TEST_ENV_NUMBER" == "" ]; then
20+
export PARALLEL_TESTS_CONCURRENCY_INDEX=0
21+
else
22+
export PARALLEL_TESTS_CONCURRENCY_INDEX=$(( $TEST_ENV_NUMBER - 1 ))
23+
fi
24+
25+
# The current index for the Knapsack Pro API is {0,1,2} + (3 * {0,1}) in other words either {0,1,2,3,4,5}
26+
KNAPSACK_PRO_CI_NODE_INDEX=$(( $PARALLEL_TESTS_CONCURRENCY_INDEX + ($PARALLEL_TESTS_CONCURRENCY * $KNAPSACK_PRO_CI_NODE_INDEX) ))
27+
28+
# Debug log
29+
echo KNAPSACK_PRO_CI_NODE_TOTAL=$KNAPSACK_PRO_CI_NODE_TOTAL KNAPSACK_PRO_CI_NODE_INDEX=$KNAPSACK_PRO_CI_NODE_INDEX PARALLEL_TESTS_CONCURRENCY=$PARALLEL_TESTS_CONCURRENCY
30+
31+
bundle exec rake knapsack_pro:queue:rspec &
32+
knapsack_pro_pid=$!
33+
wait $knapsack_pro_pid
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
3+
export PARALLEL_TESTS_CONCURRENCY=2
4+
#export KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES=true
5+
6+
CI_BUILD_ID=$(openssl rand -base64 32)
7+
8+
KNAPSACK_PRO_ENDPOINT=http://api.knapsackpro.test:3000 \
9+
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=a28ce51204d7c7dbd25c3352fea222cf \
10+
KNAPSACK_PRO_REPOSITORY_ADAPTER=git \
11+
KNAPSACK_PRO_PROJECT_DIR=. \
12+
KNAPSACK_PRO_CI_NODE_TOTAL=${2:-2} \
13+
KNAPSACK_PRO_CI_NODE_INDEX=${1:-0} \
14+
PARALLEL_TESTS_CONCURRENCY=$PARALLEL_TESTS_CONCURRENCY \
15+
KNAPSACK_PRO_CI_NODE_BUILD_ID=${3:-$CI_BUILD_ID} \
16+
bundle exec parallel_test -n $PARALLEL_TESTS_CONCURRENCY -e './bin/parallel_tests_handle_signals'

0 commit comments

Comments
 (0)