Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bin/knapsack_pro_all.rb
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
'./bin/knapsack_pro_queue_rspec_encrypted' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
'./bin/knapsack_pro_fixed_queue_split_rspec_encrypted' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
'./bin/parallel_tests_knapsack_pro_queue_rspec' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
'./bin/parallel_tests_knapsack_pro_queue_rspec_handle_signals' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
'./bin/parallel_tests_knapsack_pro_single_machine_run BUILD_ID' => [''],
'./bin/bin_knapsack_pro_rspec' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
'./bin/bin_knapsack_pro_queue_rspec' => ['0 2 BUILD_ID', '1 2 BUILD_ID'],
Expand Down
33 changes: 33 additions & 0 deletions bin/parallel_tests_handle_signals
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

handle_signal() {
local signal=$1
if [[ -n $knapsack_pro_pid ]]; then
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"
kill -TERM $knapsack_pro_pid
echo "KNAPSACK_PRO_CI_NODE_INDEX=$KNAPSACK_PRO_CI_NODE_INDEX Waiting for the Knapsack Pro process with PID $knapsack_pro_pid to terminate"
wait $knapsack_pro_pid
fi
}

trap 'handle_signal TERM' TERM
trap 'handle_signal INT' INT

# The Knapsack Pro API sees 3 * 2 = 6 parallel nodes
export KNAPSACK_PRO_CI_NODE_TOTAL=$(( $PARALLEL_TESTS_CONCURRENCY * $KNAPSACK_PRO_CI_NODE_TOTAL ))

if [ "$TEST_ENV_NUMBER" == "" ]; then
export PARALLEL_TESTS_CONCURRENCY_INDEX=0
else
export PARALLEL_TESTS_CONCURRENCY_INDEX=$(( $TEST_ENV_NUMBER - 1 ))
fi

# 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}
KNAPSACK_PRO_CI_NODE_INDEX=$(( $PARALLEL_TESTS_CONCURRENCY_INDEX + ($PARALLEL_TESTS_CONCURRENCY * $KNAPSACK_PRO_CI_NODE_INDEX) ))

# Debug log
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

bundle exec rake knapsack_pro:queue:rspec &
knapsack_pro_pid=$!
wait $knapsack_pro_pid
16 changes: 16 additions & 0 deletions bin/parallel_tests_knapsack_pro_queue_rspec_handle_signals
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

export PARALLEL_TESTS_CONCURRENCY=2
#export KNAPSACK_PRO_RSPEC_SPLIT_BY_TEST_EXAMPLES=true

CI_BUILD_ID=$(openssl rand -base64 32)

KNAPSACK_PRO_ENDPOINT=http://api.knapsackpro.test:3000 \
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=a28ce51204d7c7dbd25c3352fea222cf \
KNAPSACK_PRO_REPOSITORY_ADAPTER=git \
KNAPSACK_PRO_PROJECT_DIR=. \
KNAPSACK_PRO_CI_NODE_TOTAL=${2:-2} \
KNAPSACK_PRO_CI_NODE_INDEX=${1:-0} \
PARALLEL_TESTS_CONCURRENCY=$PARALLEL_TESTS_CONCURRENCY \
KNAPSACK_PRO_CI_NODE_BUILD_ID=${3:-$CI_BUILD_ID} \
bundle exec parallel_test -n $PARALLEL_TESTS_CONCURRENCY -e './bin/parallel_tests_handle_signals'
Loading