Skip to content

Commit e44220d

Browse files
committed
make all AWS instances run in parallel
1 parent 3f21f64 commit e44220d

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

scripts/aws_tests.bash

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@ VOLUME_SIZE=10 # in GB
2121

2222
PROJECT_DIR=$(basename $(pwd))
2323

24-
for INSTANCE_NAME in "${INSTANCES_x86_64[@]}" "${INSTANCES_aarch64[@]}"; do
25-
if printf '%s\n' "${INSTANCES_aarch64[@]}" | grep -qx "${INSTANCE_NAME}"; then
26-
AMI_ID=${AMI_ID_aarch64}
27-
else
28-
AMI_ID=${AMI_ID_x86_64}
29-
fi
24+
process_instance() {
25+
INSTANCE_NAME=$1
26+
AMI_ID=$2
3027
echo "Running instance for ${INSTANCE_NAME} with AMI ${AMI_ID}"
3128

3229
INSTANCE_ID=$(aws ec2 run-instances \
@@ -38,17 +35,18 @@ for INSTANCE_NAME in "${INSTANCES_x86_64[@]}" "${INSTANCES_aarch64[@]}"; do
3835
--security-group-ids ${SECURITY_GROUP} \
3936
--count "1" --query 'Instances[0].InstanceId' --output text)
4037

38+
echo "Waiting for instance ${INSTANCE_ID} to be ready..."
4139
aws ec2 wait instance-status-ok --instance-ids ${INSTANCE_ID}
4240
echo "Started instance: ${INSTANCE_ID}"
4341

4442
PUBLIC_IP=$(aws ec2 describe-instances \
4543
--instance-ids ${INSTANCE_ID} \
4644
--query "Reservations[0].Instances[0].PublicIpAddress" \
4745
--output text)
48-
echo "Instance public IP: ${PUBLIC_IP}"
46+
echo "Instance ${INSTANCE_ID} public IP: ${PUBLIC_IP}"
4947

5048
rsync -avz --partial --progress --exclude ".git" --exclude "build" -e "${SSH_COMMAND}" \
51-
${PROJECT_DIR}/ ubuntu@${PUBLIC_IP}:~/${PROJECT_DIR}
49+
./ ubuntu@${PUBLIC_IP}:~/${PROJECT_DIR}
5250
${SSH_COMMAND} ubuntu@${PUBLIC_IP} << 'EOF'
5351
set -e # Exit on error
5452
@@ -63,11 +61,26 @@ for INSTANCE_NAME in "${INSTANCES_x86_64[@]}" "${INSTANCES_aarch64[@]}"; do
6361
./scripts/generate_multiple_tables.py
6462
EOF
6563

66-
echo "Script executed successfully"
64+
echo "Script executed successfully on ${INSTANCE_NAME}"
6765
mkdir -p "${PROJECT_DIR}/outputs/${INSTANCE_NAME}"
6866
rsync -avz --partial --progress -e "${SSH_COMMAND}" \
69-
ubuntu@${PUBLIC_IP}:~/${PROJECT_DIR}/outputs/ ${PROJECT_DIR}/outputs/${INSTANCE_NAME}/
67+
ubuntu@${PUBLIC_IP}:~/${PROJECT_DIR}/outputs/ ./outputs/${INSTANCE_NAME}/
7068

7169
aws ec2 terminate-instances --instance-ids ${INSTANCE_ID}
7270
echo "Terminated instance: ${INSTANCE_ID}"
71+
}
72+
73+
echo "Launching ${#INSTANCES_aarch64[@]} aarch64 instances and ${#INSTANCES_x86_64[@]} x86_64 instances in parallel..."
74+
for INSTANCE_NAME in "${INSTANCES_x86_64[@]}" "${INSTANCES_aarch64[@]}"; do
75+
if printf '%s\n' "${INSTANCES_aarch64[@]}" | grep -qx "${INSTANCE_NAME}"; then
76+
AMI_ID=${AMI_ID_aarch64}
77+
else
78+
AMI_ID=${AMI_ID_x86_64}
79+
fi
80+
81+
process_instance "${INSTANCE_NAME}" "${AMI_ID}" 2>&1 | tee "${INSTANCE_NAME}.log" &
7382
done
83+
84+
# Wait for all background jobs to finish
85+
wait
86+
echo "All instances completed."

0 commit comments

Comments
 (0)