@@ -520,6 +520,212 @@ functions:
520
520
-v \
521
521
--fault revoked
522
522
523
+ add-aws-auth-variables-to-file :
524
+ - command : shell.exec
525
+ type : test
526
+ params :
527
+ working_dir : " src"
528
+ silent : true
529
+ script : |
530
+ cat <<EOF > ${DRIVERS_TOOLS}/.evergreen/auth_aws/aws_e2e_setup.json
531
+ {
532
+ "iam_auth_ecs_account" : "${iam_auth_ecs_account}",
533
+ "iam_auth_ecs_secret_access_key" : "${iam_auth_ecs_secret_access_key}",
534
+ "iam_auth_ecs_account_arn": "arn:aws:iam::557821124784:user/authtest_fargate_user",
535
+ "iam_auth_ecs_cluster": "${iam_auth_ecs_cluster}",
536
+ "iam_auth_ecs_task_definition": "${iam_auth_ecs_task_definition}",
537
+ "iam_auth_ecs_subnet_a": "${iam_auth_ecs_subnet_a}",
538
+ "iam_auth_ecs_subnet_b": "${iam_auth_ecs_subnet_b}",
539
+ "iam_auth_ecs_security_group": "${iam_auth_ecs_security_group}",
540
+ "iam_auth_assume_aws_account" : "${iam_auth_assume_aws_account}",
541
+ "iam_auth_assume_aws_secret_access_key" : "${iam_auth_assume_aws_secret_access_key}",
542
+ "iam_auth_assume_role_name" : "${iam_auth_assume_role_name}",
543
+ "iam_auth_ec2_instance_account" : "${iam_auth_ec2_instance_account}",
544
+ "iam_auth_ec2_instance_secret_access_key" : "${iam_auth_ec2_instance_secret_access_key}",
545
+ "iam_auth_ec2_instance_profile" : "${iam_auth_ec2_instance_profile}"
546
+ }
547
+ EOF
548
+
549
+ run-aws-auth-test-with-regular-aws-credentials :
550
+ - command : shell.exec
551
+ type : test
552
+ params :
553
+ working_dir : " src"
554
+ script : |
555
+ ${PREPARE_SHELL}
556
+ cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
557
+ mongo aws_e2e_regular_aws.js
558
+ - command : shell.exec
559
+ type : test
560
+ params :
561
+ working_dir : " src"
562
+ silent : true
563
+ script : |
564
+ cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
565
+ alias urlencode='python -c "import sys, urllib as ul; sys.stdout.write(ul.quote_plus(sys.argv[1]))"'
566
+ USER=$(urlencode ${iam_auth_ecs_account})
567
+ PASS=$(urlencode ${iam_auth_ecs_secret_access_key})
568
+ MONGODB_URI="mongodb://$USER:$PASS@localhost"
569
+ EOF
570
+ - command : shell.exec
571
+ type : test
572
+ params :
573
+ working_dir : " src"
574
+ script : |
575
+ ${PREPARE_SHELL}
576
+ ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-aws-test.sh
577
+
578
+ run-aws-auth-test-with-assume-role-credentials :
579
+ - command : shell.exec
580
+ type : test
581
+ params :
582
+ working_dir : " src"
583
+ script : |
584
+ ${PREPARE_SHELL}
585
+ # The aws_e2e_assume_role script requires python3 with boto3.
586
+ virtualenv -p ${PYTHON3} mongovenv
587
+ if [ "Windows_NT" = "$OS" ]; then
588
+ . mongovenv/Scripts/activate
589
+ else
590
+ . mongovenv/bin/activate
591
+ fi
592
+ pip install boto3
593
+ cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
594
+ mongo aws_e2e_assume_role.js
595
+ - command : shell.exec
596
+ type : test
597
+ params :
598
+ working_dir : " src"
599
+ silent : true
600
+ script : |
601
+ # DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
602
+ cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
603
+ alias urlencode='python -c "import sys, urllib as ul; sys.stdout.write(ul.quote_plus(sys.argv[1]))"'
604
+ alias jsonkey='python -c "import json,sys;sys.stdout.write(json.load(sys.stdin)[sys.argv[1]])" < ${DRIVERS_TOOLS}/.evergreen/auth_aws/creds.json'
605
+ USER=$(jsonkey AccessKeyId)
606
+ USER=$(urlencode $USER)
607
+ PASS=$(jsonkey SecretAccessKey)
608
+ PASS=$(urlencode $PASS)
609
+ SESSION_TOKEN=$(jsonkey SessionToken)
610
+ SESSION_TOKEN=$(urlencode $SESSION_TOKEN)
611
+ MONGODB_URI="mongodb://$USER:$PASS@localhost"
612
+ EOF
613
+ - command : shell.exec
614
+ type : test
615
+ params :
616
+ working_dir : " src"
617
+ script : |
618
+ ${PREPARE_SHELL}
619
+ ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-aws-test.sh
620
+
621
+ run-aws-auth-test-with-aws-EC2-credentials :
622
+ - command : shell.exec
623
+ type : test
624
+ params :
625
+ working_dir : " src"
626
+ script : |
627
+ ${PREPARE_SHELL}
628
+ if [ "${SKIP_EC2_AUTH_TEST}" == "true" ]; then
629
+ echo "This platform does not support the EC2 auth test, skipping..."
630
+ exit 0
631
+ fi
632
+ # The mongovenv was created earlier in run-aws-auth-test-with-assume-role-credentials.
633
+ if [ "Windows_NT" = "$OS" ]; then
634
+ . mongovenv/Scripts/activate
635
+ else
636
+ . mongovenv/bin/activate
637
+ fi
638
+ cd ${DRIVERS_TOOLS}/.evergreen/auth_aws
639
+ mongo aws_e2e_ec2.js
640
+ - command : shell.exec
641
+ type : test
642
+ params :
643
+ working_dir : " src"
644
+ script : |
645
+ ${PREPARE_SHELL}
646
+ if [ "${SKIP_EC2_AUTH_TEST}" == "true" ]; then
647
+ exit 0
648
+ fi
649
+ ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-aws-test.sh
650
+
651
+ run-aws-auth-test-with-aws-credentials-as-environment-variables :
652
+ - command : shell.exec
653
+ type : test
654
+ params :
655
+ working_dir : " src"
656
+ silent : true
657
+ script : |
658
+ # DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
659
+ cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
660
+ export AWS_ACCESS_KEY_ID=${iam_auth_ecs_account}
661
+ export AWS_SECRET_ACCESS_KEY=${iam_auth_ecs_secret_access_key}
662
+ EOF
663
+ - command : shell.exec
664
+ type : test
665
+ params :
666
+ working_dir : " src"
667
+ script : |
668
+ ${PREPARE_SHELL}
669
+ PROJECT_DIRECTORY=${PROJECT_DIRECTORY} ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-aws-test.sh
670
+
671
+ run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables :
672
+ - command : shell.exec
673
+ type : test
674
+ params :
675
+ working_dir : " src"
676
+ silent : true
677
+ script : |
678
+ # DO NOT ECHO WITH XTRACE (which PREPARE_SHELL does)
679
+ cat <<'EOF' > "${PROJECT_DIRECTORY}/prepare_mongodb_aws.sh"
680
+ alias jsonkey='python -c "import json,sys;sys.stdout.write(json.load(sys.stdin)[sys.argv[1]])" < ${DRIVERS_TOOLS}/.evergreen/auth_aws/creds.json'
681
+ export AWS_ACCESS_KEY_ID=$(jsonkey AccessKeyId)
682
+ export AWS_SECRET_ACCESS_KEY=$(jsonkey SecretAccessKey)
683
+ export AWS_SESSION_TOKEN=$(jsonkey SessionToken)
684
+ EOF
685
+ - command : shell.exec
686
+ type : test
687
+ params :
688
+ working_dir : " src"
689
+ script : |
690
+ ${PREPARE_SHELL}
691
+ ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-aws-test.sh
692
+
693
+ run-aws-ECS-auth-test :
694
+ - command : shell.exec
695
+ type : test
696
+ params :
697
+ working_dir : src/go.mongodb.org/mongo-driver
698
+ script : |
699
+ ${PREPARE_SHELL}
700
+ if [ "${SKIP_ECS_AUTH_TEST}" == "true" ]; then
701
+ echo "This platform does not support the ECS auth test, skipping..."
702
+ exit 0
703
+ fi
704
+ make build-aws-ecs-test
705
+ - command : shell.exec
706
+ type : test
707
+ params :
708
+ working_dir : " src"
709
+ script : |
710
+ ${PREPARE_SHELL}
711
+ if [ "${SKIP_ECS_AUTH_TEST}" == "true" ]; then
712
+ exit 0
713
+ fi
714
+ AUTH_AWS_DIR=${DRIVERS_TOOLS}/.evergreen/auth_aws
715
+ ECS_SRC_DIR=$AUTH_AWS_DIR/src
716
+ # pack up project directory to ssh it to the container
717
+ mkdir -p $ECS_SRC_DIR/.evergreen
718
+ cp ${PROJECT_DIRECTORY}/main $ECS_SRC_DIR
719
+ cp ${PROJECT_DIRECTORY}/.evergreen/run-mongodb-aws-ecs-test.sh $ECS_SRC_DIR/.evergreen
720
+ tar -czf $ECS_SRC_DIR/src.tgz -C $PROJECT_DIRECTORY .
721
+ cd $AUTH_AWS_DIR
722
+ cat <<EOF > setup.js
723
+ const mongo_binaries = "$MONGODB_BINARIES";
724
+ const project_dir = "$ECS_SRC_DIR";
725
+ EOF
726
+ cat setup.js
727
+ mongo --nodb setup.js aws_e2e_ecs.js
728
+
523
729
pre :
524
730
- func : fetch-source
525
731
- func : prepare-resources
@@ -1236,6 +1442,21 @@ tasks:
1236
1442
commands :
1237
1443
- func : " run-atlas-test"
1238
1444
1445
+ - name : " aws-auth-test"
1446
+ commands :
1447
+ - func : bootstrap-mongo-orchestration
1448
+ vars :
1449
+ AUTH : " auth"
1450
+ ORCHESTRATION_FILE : " auth-aws.json"
1451
+ TOPOLOGY : " server"
1452
+ - func : add-aws-auth-variables-to-file
1453
+ - func : run-aws-auth-test-with-regular-aws-credentials
1454
+ - func : run-aws-auth-test-with-assume-role-credentials
1455
+ - func : run-aws-auth-test-with-aws-credentials-as-environment-variables
1456
+ - func : run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables
1457
+ - func : run-aws-auth-test-with-aws-EC2-credentials
1458
+ - func : run-aws-ECS-auth-test
1459
+
1239
1460
- name : go1.10-build-cse
1240
1461
tags : ["compile-check"]
1241
1462
commands :
@@ -1317,6 +1538,33 @@ axes:
1317
1538
variables :
1318
1539
GO_DIST : " /opt/golang/go1.12"
1319
1540
1541
+ - id : os-aws-auth
1542
+ display_name : OS
1543
+ values :
1544
+ - id : " windows-64-vsMulti-small-go-1-12"
1545
+ display_name : " Windows 64-bit"
1546
+ run_on :
1547
+ - windows-64-vsMulti-small
1548
+ variables :
1549
+ GCC_PATH : " /cygdrive/c/mingw-w64/x86_64-4.9.1-posix-seh-rt_v3-rev1/mingw64/bin"
1550
+ GO_DIST : " C:\\ golang\\ go1.12"
1551
+ SKIP_ECS_AUTH_TEST : true
1552
+ PYTHON3 : " C:/python/Python38/python.exe"
1553
+ - id : " ubuntu1804-64-go-1-12"
1554
+ display_name : " Ubuntu 18.04"
1555
+ run_on : ubuntu1804-test
1556
+ variables :
1557
+ GO_DIST : " /opt/golang/go1.12"
1558
+ PYTHON3 : python3
1559
+ - id : " osx-go-1-12"
1560
+ display_name : " MacOS 10.14"
1561
+ run_on : macos-1014
1562
+ variables :
1563
+ GO_DIST : " /opt/golang/go1.12"
1564
+ SKIP_ECS_AUTH_TEST : true
1565
+ SKIP_EC2_AUTH_TEST : true
1566
+ PYTHON3 : python3
1567
+
1320
1568
buildvariants :
1321
1569
- name : static-analysis
1322
1570
display_name : " Static Analysis"
@@ -1405,3 +1653,9 @@ buildvariants:
1405
1653
display_name : " Enterprise Auth - ${os-ssl-32}"
1406
1654
tasks :
1407
1655
- name : " .test .enterprise-auth"
1656
+
1657
+ - matrix_name : " aws-auth-test"
1658
+ matrix_spec : { os-aws-auth: "*" }
1659
+ display_name : " MONGODB-AWS Auth ${os-aws-auth}"
1660
+ tasks :
1661
+ - name : " aws-auth-test"
0 commit comments