1#!/bin/sh
2set -o errexit  # Exit the script with error if any of the commands fail
3# AUTH_HOST=${auth_host} # Evergreen variable
4# AUTH_PLAIN=${auth_plain} # Evergreen variable
5# AUTH_MONGODBCR=${auth_mongodbcr} # Evergreen variable
6# AUTH_GSSAPI=${auth_gssapi} # Evergreen variable
7# AUTH_CROSSREALM=${auth_crossrealm} # Evergreen variable
8# AUTH_GSSAPI_UTF8=${auth_gssapi_utf8} # Evergreen variable
9# ATLAS_FREE=${atlas_free} # Evergreen variable
10# ATLAS_REPLSET=${atlas_replset} # Evergreen variable
11# ATLAS_SHARD=${atlas_shard} # Evergreen variable
12
13
14C_TIMEOUT="connectTimeoutMS=30000"
15
16
17OS=$(uname -s | tr '[:upper:]' '[:lower:]')
18if grep -q "#define MONGOC_ENABLE_SASL 1" src/mongoc/mongoc-config.h; then
19   SASL=1
20else
21   SASL=0
22fi
23if grep -q "#define MONGOC_ENABLE_SSL 1" src/mongoc/mongoc-config.h; then
24   SSL=1
25else
26   SSL=0
27fi
28
29case "$OS" in
30   cygwin*)
31      export PATH=$PATH:`pwd`/tests:`pwd`/Debug:`pwd`/src/libbson/Debug
32      chmod +x ./Debug/* src/libbson/Debug/*
33      PING="./Debug/mongoc-ping.exe"
34      ;;
35
36   darwin)
37      sed -i'.bak' 's/\/data\/mci\/[a-z0-9]\{32\}\/mongoc/./g' mongoc-ping
38      export DYLD_LIBRARY_PATH="install-dir/lib:.libs:src/libbson/.libs"
39      PING="./mongoc-ping"
40      ;;
41
42   *)
43      # This libtool wrapper script was built in a unique dir like
44      # "/data/mci/998e754a0d1ed79b8bf733f405b87778/mongoc",
45      # replace its absolute path with "." so it can run in the CWD.
46      sed -i'' 's/\/data\/mci\/[a-z0-9]\{32\}\/mongoc/./g' mongoc-ping
47      export LD_LIBRARY_PATH="install-dir/lib:.libs:src/libbson/.libs"
48      PING="./mongoc-ping"
49esac
50
51if test -f /tmp/drivers.keytab; then
52   kinit -k -t /tmp/drivers.keytab -p drivers@LDAPTEST.10GEN.CC || true
53fi
54
55# Archlinux (which we use for testing various self-installed OpenSSL versions)
56# Stores their trust list here. We need to copy it to our custom installed
57# OpenSSL trust store.
58# LibreSSL bundle their own trust store (in install-dir/etc/ssl/cert.pem)
59cp /etc/ca-certificates/extracted/tls-ca-bundle.pem install-dir/ssl/cert.pem || true
60# OpenSSL fips enabled path
61cp /etc/ca-certificates/extracted/tls-ca-bundle.pem install-dir/cert.pem || true
62
63export PATH=install-dir/bin:$PATH
64openssl version || true
65
66if [ $SSL -eq 1 ]; then
67   # FIXME: CDRIVER-2008
68   if [ "${OS%_*}" != "cygwin" ]; then
69      echo "Authenticating using X.509"
70      $PING "mongodb://CN=client,OU=kerneluser,O=10Gen,L=New York City,ST=New York,C=US@${AUTH_HOST}/?ssl=true&authMechanism=MONGODB-X509&sslClientCertificateKeyFile=./tests/x509gen/legacy-x509.pem&sslCertificateAuthorityFile=tests/x509gen/legacy-ca.crt&sslAllowInvalidHostnames=true&${C_TIMEOUT}"
71   fi
72   echo "Connecting to Atlas Free Tier"
73   $PING "$ATLAS_FREE&${C_TIMEOUT}"
74   echo "Connecting to Atlas Replica Set"
75   $PING "$ATLAS_REPLSET&${C_TIMEOUT}"
76   echo "Connecting to Atlas Sharded Cluster"
77   $PING "$ATLAS_SHARD&${C_TIMEOUT}"
78fi
79
80echo "Authenticating using PLAIN"
81$PING "mongodb://${AUTH_PLAIN}@${AUTH_HOST}/?authMechanism=PLAIN&${C_TIMEOUT}"
82
83echo "Authenticating using MONGODB-CR"
84$PING "mongodb://${AUTH_MONGODBCR}@${AUTH_HOST}/mongodb-cr?authMechanism=MONGODB-CR&${C_TIMEOUT}"
85
86if [ $SASL -eq 1 ]; then
87echo "Authenticating using GSSAPI"
88   $PING "mongodb://${AUTH_GSSAPI}@${AUTH_HOST}/?authMechanism=GSSAPI&${C_TIMEOUT}"
89   if [ "${OS%_*}" = "cygwin" ]; then
90      echo "Authenticating using GSSAPI (service realm: LDAPTEST.10GEN.CC)"
91      $PING "mongodb://${AUTH_CROSSREALM}@${AUTH_HOST}/?authMechanism=GSSAPI&authMechanismProperties=SERVICE_REALM:LDAPTEST.10GEN.CC&${C_TIMEOUT}"
92      echo "Authenticating using GSSAPI (UTF-8 credentials)"
93      $PING "mongodb://${AUTH_GSSAPI_UTF8}@${AUTH_HOST}/?authMechanism=GSSAPI&${C_TIMEOUT}"
94   fi
95fi
96
97