Skip to content

Commit 1bd939d

Browse files
authored
CSHARP-4380: Remove legacy shell from test scripts (#1225)
1 parent f609ce8 commit 1bd939d

File tree

2 files changed

+37
-195
lines changed

2 files changed

+37
-195
lines changed

evergreen/evergreen.yml

Lines changed: 32 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -426,130 +426,56 @@ functions:
426426
MONGODB_URI="${plain_auth_mongodb_uri}" evergreen/run-plain-auth-tests.sh
427427
428428
add-aws-auth-variables-to-file:
429-
- command: shell.exec
430-
type: test
429+
- command: ec2.assume_role
431430
params:
432-
working_dir: mongo-csharp-driver
433-
silent: true
434-
script: |
435-
cat <<EOF > ${DRIVERS_TOOLS}/.evergreen/auth_aws/aws_e2e_setup.json
436-
{
437-
"iam_auth_ecs_account" : "${iam_auth_ecs_account}",
438-
"iam_auth_ecs_secret_access_key" : "${iam_auth_ecs_secret_access_key}",
439-
"iam_auth_ecs_account_arn": "arn:aws:iam::557821124784:user/authtest_fargate_user",
440-
"iam_auth_ecs_cluster": "${iam_auth_ecs_cluster}",
441-
"iam_auth_ecs_task_definition": "${iam_auth_ecs_task_definition}",
442-
"iam_auth_ecs_subnet_a": "${iam_auth_ecs_subnet_a}",
443-
"iam_auth_ecs_subnet_b": "${iam_auth_ecs_subnet_b}",
444-
"iam_auth_ecs_security_group": "${iam_auth_ecs_security_group}",
445-
"iam_auth_assume_aws_account" : "${iam_auth_assume_aws_account}",
446-
"iam_auth_assume_aws_secret_access_key" : "${iam_auth_assume_aws_secret_access_key}",
447-
"iam_auth_assume_role_name" : "${iam_auth_assume_role_name}",
448-
"iam_auth_ec2_instance_account" : "${iam_auth_ec2_instance_account}",
449-
"iam_auth_ec2_instance_secret_access_key" : "${iam_auth_ec2_instance_secret_access_key}",
450-
"iam_auth_ec2_instance_profile" : "${iam_auth_ec2_instance_profile}",
451-
"iam_auth_assume_web_role_name": "${iam_auth_assume_web_role_name}",
452-
"iam_web_identity_issuer": "${iam_web_identity_issuer}",
453-
"iam_web_identity_rsa_key": "${iam_web_identity_rsa_key}",
454-
"iam_web_identity_jwks_uri": "${iam_web_identity_jwks_uri}",
455-
"iam_web_identity_token_file": "${iam_web_identity_token_file}"
456-
}
457-
EOF
458-
459-
run-aws-auth-test-with-regular-aws-credentials:
431+
role_arn: ${aws_test_secrets_role}
460432
- command: shell.exec
461433
type: test
462434
params:
463-
silent: true
464435
shell: "bash"
465436
working_dir: mongo-csharp-driver
437+
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
466438
script: |
467439
${PREPARE_SHELL}
468-
cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
469-
. ./activate-authawsvenv.sh
470-
mongo aws_e2e_regular_aws.js
440+
cd $DRIVERS_TOOLS/.evergreen/auth_aws
441+
./setup_secrets.sh drivers/aws_auth
442+
443+
run-aws-auth-test-with-regular-aws-credentials:
471444
- command: shell.exec
472445
type: test
473446
params:
447+
env:
448+
IAM_AUTH_ECS_ACCOUNT: ${iam_auth_ecs_account}
449+
IAM_AUTH_ECS_SECRET_ACCESS_KEY: ${iam_auth_ecs_secret_access_key}
474450
working_dir: mongo-csharp-driver
475-
script: |
476-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
477-
alias urlencode='${python3_binary} -c "import sys, urllib.parse as ulp; sys.stdout.write(ulp.quote_plus(sys.argv[1]))"'
478-
USER=$(urlencode "${iam_auth_ecs_account}")
479-
PASS=$(urlencode "${iam_auth_ecs_secret_access_key}")
480-
MONGODB_URI="mongodb://$USER:$PASS@localhost"
481-
EOF
482-
PROJECT_DIRECTORY=${PROJECT_DIRECTORY} OS=${OS} evergreen/run-mongodb-aws-test.sh
451+
script:
452+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=${OS} evergreen/run-mongodb-aws-test.sh regular
483453

484454
run-aws-auth-test-with-assume-role-credentials:
485455
- command: shell.exec
486456
type: test
487457
params:
488-
silent: true
489-
shell: "bash"
490458
working_dir: mongo-csharp-driver
491-
script: |
492-
${PREPARE_SHELL}
493-
# The aws_e2e_assume_role script requires python3 with boto3.
494-
cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
495-
. ./activate-authawsvenv.sh
496-
mongo aws_e2e_assume_role.js
497-
- command: shell.exec
498-
type: test
499-
params:
500-
working_dir: mongo-csharp-driver
501-
script: |
502-
# DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
503-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
504-
alias urlencode='${python3_binary} -c "import sys, urllib.parse as ulp; sys.stdout.write(ulp.quote_plus(sys.argv[1]))"'
505-
alias jsonkey='${python3_binary} -c "import json,sys;sys.stdout.write(json.load(sys.stdin)[sys.argv[1]])" < ${DRIVERS_TOOLS}/.evergreen/auth_aws/creds.json'
506-
USER=$(jsonkey AccessKeyId)
507-
USER=$(urlencode $USER)
508-
PASS=$(jsonkey SecretAccessKey)
509-
PASS=$(urlencode $PASS)
510-
SESSION_TOKEN=$(jsonkey SessionToken)
511-
SESSION_TOKEN=$(urlencode $SESSION_TOKEN)
512-
MONGODB_URI="mongodb://$USER:$PASS@localhost"
513-
EOF
514-
PROJECT_DIRECTORY=${PROJECT_DIRECTORY} DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=${OS} evergreen/run-mongodb-aws-test.sh
459+
script:
460+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=${OS} evergreen/run-mongodb-aws-test.sh assume-role
515461

516462
run-aws-auth-test-with-aws-EC2-credentials:
517463
- command: shell.exec
518464
type: test
519465
params:
520-
silent: true
521-
shell: "bash"
522466
working_dir: mongo-csharp-driver
523467
script: |
524468
${PREPARE_SHELL}
525469
if [ "${skip_EC2_auth_test}" = "true" ]; then
526-
echo "This platform does not support the EC2 auth test, skipping..."
527-
exit 0
528-
fi
529-
cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
530-
. ./activate-authawsvenv.sh
531-
mongo aws_e2e_ec2.js
532-
- command: shell.exec
533-
type: test
534-
params:
535-
working_dir: mongo-csharp-driver
536-
script: |
537-
if [ "${skip_EC2_auth_test}" = "true" ]; then
538-
echo "This platform does not support the EC2 auth test, skipping..."
539-
exit 0
470+
echo "This platform does not support the EC2 auth test, skipping..."
471+
exit 0
540472
fi
541-
# DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
542-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
543-
MONGODB_URI="mongodb://localhost"
544-
EOF
545-
export AWS_EC2_ENABLED=true
546-
PROJECT_DIRECTORY=${PROJECT_DIRECTORY} ASSERT_NO_URI_CREDS=true OS=$OS evergreen/run-mongodb-aws-test.sh
473+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=${OS} ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh ec2
547474
548475
run-aws-auth-test-with-aws-ECS-credentials:
549476
- command: shell.exec
550477
type: test
551478
params:
552-
silent: true
553479
shell: "bash"
554480
working_dir: mongo-csharp-driver
555481
script: |
@@ -558,8 +484,6 @@ functions:
558484
echo "This platform does not support the ECS auth test, skipping..."
559485
exit 0
560486
fi
561-
cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
562-
. ./activate-authawsvenv.sh
563487
echo "Project Directory: $PROJECT_DIRECTORY"
564488
# SRC_DIRECTORY is workaround since EG_TOOLS expects "src" folder as a root
565489
SRC_DIRECTORY=$(dirname $PROJECT_DIRECTORY)/src
@@ -568,127 +492,54 @@ functions:
568492
# Workaround. EG_TOOLS scripts for ECS assume that a folder with EG scripts in the driver is named ".evergreen"
569493
mkdir $SRC_DIRECTORY/.evergreen
570494
cp -r $SRC_DIRECTORY/evergreen/run-mongodb-aws-ecs-test.sh $SRC_DIRECTORY/.evergreen/run-mongodb-aws-ecs-test.sh
571-
cat <<EOF > setup.js
572-
const mongo_binaries = "$MONGODB_BINARIES";
573-
const project_dir = "$SRC_DIRECTORY"
574-
EOF
575-
mongo --nodb setup.js aws_e2e_ecs.js
576-
cd -
495+
496+
export PROJECT_DIRECTORY="$SRC_DIRECTORY"
497+
${DRIVERS_TOOLS}/.evergreen/auth_aws/aws_setup.sh ecs
577498
578499
run-aws-auth-test-with-aws-web-identity-credentials:
579500
- command: shell.exec
580501
type: test
581502
params:
582-
shell: "bash"
583503
working_dir: mongo-csharp-driver
584504
script: |
585505
${PREPARE_SHELL}
586506
if [ "${skip_web_identity_auth_test}" = "true" ]; then
587507
echo "This platform does not support the web identity auth test, skipping..."
588508
exit 0
589509
fi
590-
cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
591-
. ./activate-authawsvenv.sh
592-
mongo aws_e2e_web_identity.js
593-
- command: shell.exec
594-
type: test
595-
params:
596-
working_dir: mongo-csharp-driver
597-
silent: true
598-
script: |
599-
if [ "${skip_web_identity_auth_test}" = "true" ]; then
600-
echo "This platform does not support the web identity auth test, skipping..."
601-
exit 0
602-
fi
603-
# DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
604-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
605-
export AWS_ROLE_ARN="${iam_auth_assume_web_role_name}"
606-
export AWS_WEB_IDENTITY_TOKEN_FILE="${iam_web_identity_token_file}"
607-
export MONGODB_URI="mongodb://localhost"
608-
EOF
609-
- command: shell.exec
610-
type: test
611-
params:
612-
working_dir: mongo-csharp-driver
613-
script: |
614-
${PREPARE_SHELL}
615-
if [ "${skip_web_identity_auth_test}" = "true" ]; then
616-
echo "This platform does not support the web identity auth test, skipping..."
617-
exit 0
618-
fi
619-
PROJECT_DIRECTORY=${PROJECT_DIRECTORY} OS=$OS ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh
620-
- command: shell.exec
621-
type: test
622-
params:
623-
working_dir: mongo-csharp-driver
624-
silent: true
625-
script: |
626-
if [ "${skip_EC2_auth_test}" = "true" ]; then
627-
echo "This platform does not support the web identity auth test, skipping..."
628-
exit 0
629-
fi
630-
# DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
631-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
632-
export AWS_ROLE_ARN="${iam_auth_assume_web_role_name}"
633-
export AWS_WEB_IDENTITY_TOKEN_FILE="${iam_web_identity_token_file}"
634-
export AWS_ROLE_SESSION_NAME="test"
635-
export MONGODB_URI="mongodb://localhost"
636-
EOF
510+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=$OS ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh web-identity
637511
- command: shell.exec
638512
type: test
639513
params:
514+
shell: "bash"
640515
working_dir: mongo-csharp-driver
641516
script: |
642517
${PREPARE_SHELL}
643518
if [ "${skip_web_identity_auth_test}" = "true" ]; then
644519
echo "This platform does not support the web identity auth test, skipping..."
645520
exit 0
646521
fi
647-
PROJECT_DIRECTORY=${PROJECT_DIRECTORY} OS=$OS ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh
522+
export AWS_ROLE_SESSION_NAME="test"
523+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=$OS ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh web-identity
648524
649525
run-aws-auth-test-with-aws-credentials-as-environment-variables:
650526
- command: shell.exec
651527
type: test
652528
params:
653-
silent: true
654-
working_dir: mongo-csharp-driver
655-
script: |
656-
# DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
657-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
658-
export AWS_ACCESS_KEY_ID=${iam_auth_ecs_account}
659-
export AWS_SECRET_ACCESS_KEY=${iam_auth_ecs_secret_access_key}
660-
MONGODB_URI="mongodb://localhost"
661-
EOF
662-
- command: shell.exec
663-
type: test
664-
params:
529+
env:
530+
IAM_AUTH_ECS_ACCOUNT: ${iam_auth_ecs_account}
531+
IAM_AUTH_ECS_SECRET_ACCESS_KEY: ${iam_auth_ecs_secret_access_key}
665532
working_dir: mongo-csharp-driver
666-
script: |
667-
${PREPARE_SHELL}
668-
OS=${OS} ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh
533+
script:
534+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=${OS} ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh env-creds
669535

670536
run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables:
671537
- command: shell.exec
672538
type: test
673539
params:
674-
silent: true
675540
working_dir: mongo-csharp-driver
676-
script: |
677-
# DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
678-
cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
679-
alias jsonkey='${python3_binary} -c "import json,sys;sys.stdout.write(json.load(sys.stdin)[sys.argv[1]])" < ${DRIVERS_TOOLS}/.evergreen/auth_aws/creds.json'
680-
export AWS_ACCESS_KEY_ID=$(jsonkey AccessKeyId)
681-
export AWS_SECRET_ACCESS_KEY=$(jsonkey SecretAccessKey)
682-
export AWS_SESSION_TOKEN=$(jsonkey SessionToken)
683-
MONGODB_URI="mongodb://localhost"
684-
EOF
685-
- command: shell.exec
686-
type: test
687-
params:
688-
working_dir: mongo-csharp-driver
689-
script: |
690-
${PREPARE_SHELL}
691-
OS=${OS} ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh
541+
script:
542+
DRIVERS_TOOLS=${DRIVERS_TOOLS} OS=${OS} ASSERT_NO_URI_CREDS=true evergreen/run-mongodb-aws-test.sh session-creds
692543

693544
run-atlas-data-lake-test:
694545
- command: shell.exec
@@ -2418,3 +2269,4 @@ buildvariants:
24182269
tags: ["dev-package"]
24192270
tasks:
24202271
- name: dev-package
2272+

evergreen/run-mongodb-aws-test.sh

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,10 @@ done
2626
# ensure no secrets are printed in log files
2727
set +x
2828

29-
# load the script
30-
shopt -s expand_aliases # needed for `urlencode` alias
31-
[ -s "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh" ] && source "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
32-
33-
# Provision the correct connection string
34-
if [ -z ${MONGODB_URI+x} ]; then
35-
echo "MONGODB_URI is not set";
36-
exit 1
37-
fi
38-
MONGODB_URI="${MONGODB_URI}/aws?authMechanism=MONGODB-AWS"
39-
if [[ -n ${SESSION_TOKEN} ]]; then
40-
MONGODB_URI="${MONGODB_URI}&authMechanismProperties=AWS_SESSION_TOKEN:${SESSION_TOKEN}"
41-
fi
42-
if [ "$ASSERT_NO_URI_CREDS" = "true" ]; then
29+
# Handle credentials and environment setup.
30+
. $DRIVERS_TOOLS/.evergreen/auth_aws/aws_setup.sh $1
31+
32+
if [ "${ASSERT_NO_URI_CREDS:-false}" = "true" ]; then
4333
if echo "$MONGODB_URI" | grep -q "@"; then
4434
echo "MONGODB_URI unexpectedly contains user credentials!";
4535
exit 1
@@ -56,4 +46,4 @@ if [[ "$OS" =~ Windows|windows ]]; then
5646
powershell.exe .\\build.ps1 --target=TestAwsAuthentication
5747
else
5848
./build.sh --target=TestAwsAuthentication
59-
fi
49+
fi

0 commit comments

Comments
 (0)