Skip to content

Commit babe981

Browse files
authored
RUST-2008 Remove almost all uses of add_expansions_to_env (#1186)
1 parent 7e7986a commit babe981

File tree

6 files changed

+120
-54
lines changed

6 files changed

+120
-54
lines changed

.evergreen/config.yml

Lines changed: 82 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,14 @@ task_groups:
565565
params:
566566
working_dir: src
567567
binary: bash
568-
add_expansions_to_env: true
568+
include_expansions_in_env:
569+
- DRIVERS_ATLAS_PUBLIC_API_KEY
570+
- DRIVERS_ATLAS_PRIVATE_API_KEY
571+
- DRIVERS_ATLAS_GROUP_ID
572+
- DRIVERS_ATLAS_LAMBDA_USER
573+
- DRIVERS_ATLAS_LAMBDA_PASSWORD
574+
- LAMBDA_STACK_NAME
575+
- MONGODB_VERSION
569576
env:
570577
MONGODB_VERSION: "7.0"
571578
args:
@@ -578,7 +585,11 @@ task_groups:
578585
params:
579586
working_dir: src
580587
binary: bash
581-
add_expansions_to_env: true
588+
include_expansions_in_env:
589+
- DRIVERS_ATLAS_PUBLIC_API_KEY
590+
- DRIVERS_ATLAS_PRIVATE_API_KEY
591+
- DRIVERS_ATLAS_GROUP_ID
592+
- CLUSTER_NAME
582593
args:
583594
- ${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh
584595
- func: "upload test results"
@@ -599,7 +610,14 @@ task_groups:
599610
params:
600611
working_dir: src
601612
binary: bash
602-
add_expansions_to_env: true
613+
include_expansions_in_env:
614+
- DRIVERS_ATLAS_PUBLIC_API_KEY
615+
- DRIVERS_ATLAS_PRIVATE_API_KEY
616+
- DRIVERS_ATLAS_GROUP_ID
617+
- DRIVERS_ATLAS_LAMBDA_USER
618+
- DRIVERS_ATLAS_LAMBDA_PASSWORD
619+
- LAMBDA_STACK_NAME
620+
- MONGODB_VERSION
603621
args:
604622
- ${DRIVERS_TOOLS}/.evergreen/atlas/setup-atlas-cluster.sh
605623
- command: expansions.update
@@ -610,7 +628,11 @@ task_groups:
610628
params:
611629
working_dir: src
612630
binary: bash
613-
add_expansions_to_env: true
631+
include_expansions_in_env:
632+
- DRIVERS_ATLAS_PUBLIC_API_KEY
633+
- DRIVERS_ATLAS_PRIVATE_API_KEY
634+
- DRIVERS_ATLAS_GROUP_ID
635+
- CLUSTER_NAME
614636
args:
615637
- ${DRIVERS_TOOLS}/.evergreen/atlas/teardown-atlas-cluster.sh
616638
setup_group_can_fail_task: true
@@ -891,7 +913,10 @@ tasks:
891913
params:
892914
working_dir: src
893915
binary: bash
894-
add_expansions_to_env: true
916+
include_expansions_in_env:
917+
- PROJECT_DIRECTORY
918+
- MONGODB_URI
919+
- PATH
895920
args:
896921
- .evergreen/run-search-index-test.sh
897922

@@ -1088,9 +1113,22 @@ tasks:
10881113
params:
10891114
working_dir: src
10901115
binary: bash
1091-
add_expansions_to_env: true
10921116
args:
10931117
- .evergreen/run-aws-lambda-test.sh
1118+
include_expansions_in_env:
1119+
- AWS_ACCESS_KEY_ID
1120+
- AWS_SECRET_ACCESS_KEY
1121+
- AWS_SESSION_TOKEN
1122+
- DRIVERS_ATLAS_PUBLIC_API_KEY
1123+
- DRIVERS_ATLAS_PRIVATE_API_KEY
1124+
- DRIVERS_ATLAS_LAMBDA_USER
1125+
- DRIVERS_ATLAS_LAMBDA_PASSWORD
1126+
- DRIVERS_ATLAS_GROUP_ID
1127+
- LAMBDA_STACK_NAME
1128+
- PROJECT_DIRECTORY
1129+
- DRIVERS_TOOLS
1130+
- CLUSTER_NAME
1131+
- MONGODB_URI
10941132
env:
10951133
TEST_LAMBDA_DIRECTORY: ${PROJECT_DIRECTORY}/.evergreen/aws-lambda-test
10961134
AWS_REGION: us-east-1
@@ -1173,7 +1211,11 @@ functions:
11731211
binary: bash
11741212
args:
11751213
- .evergreen/create-expansions.sh
1176-
add_expansions_to_env: true
1214+
include_expansions_in_env:
1215+
- is_patch
1216+
- version_id
1217+
- project
1218+
- LIBMONGOCRYPT_OS
11771219
- command: expansions.update
11781220
params:
11791221
file: src/expansion.yml
@@ -1391,7 +1433,15 @@ functions:
13911433
binary: sh
13921434
args:
13931435
- ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh
1394-
add_expansions_to_env: true
1436+
include_expansions_in_env:
1437+
- AUTH
1438+
- SSL
1439+
- TOPOLOGY
1440+
- LOAD_BALANCER
1441+
- REQUIRE_API_VERSION
1442+
- MONGODB_VERSION
1443+
- ORCHESTRATION_FILE
1444+
- MONGODB_BINARIES
13951445
- command: expansions.update
13961446
params:
13971447
file: mo-expansion.yml
@@ -1401,19 +1451,12 @@ functions:
14011451
binary: bash
14021452
args:
14031453
- .evergreen/generate-uri.sh
1404-
add_expansions_to_env: true
1405-
- command: expansions.update
1406-
params:
1407-
file: src/uri-expansions.yml
1408-
1409-
"generate uris":
1410-
- command: subprocess.exec
1411-
params:
1412-
working_dir: src
1413-
binary: bash
1414-
args:
1415-
- .evergreen/generate-uri.sh
1416-
add_expansions_to_env: true
1454+
include_expansions_in_env:
1455+
- DRIVERS_TOOLS
1456+
- MONGODB_URI
1457+
- SINGLE_MONGOS_LB_URI
1458+
- MULTI_MONGOS_LB_URI
1459+
- SSL
14171460
- command: expansions.update
14181461
params:
14191462
file: src/uri-expansions.yml
@@ -1426,9 +1469,6 @@ functions:
14261469
binary: bash
14271470
args:
14281471
- .evergreen/run-tests.sh
1429-
# The driver uses the absence/presence of variables defined in the project's settings to
1430-
# determine how to create a test client, so the relevant expansions here MUST be listed
1431-
# explicitly rather than setting add_expansions_to_env: true.
14321472
include_expansions_in_env:
14331473
- PROJECT_DIRECTORY
14341474
- OPENSSL
@@ -1447,7 +1487,6 @@ functions:
14471487
binary: bash
14481488
args:
14491489
- .evergreen/run-sync-tests.sh
1450-
# Ditto comment above regarding explicitly listing expansions.
14511490
include_expansions_in_env:
14521491
- PROJECT_DIRECTORY
14531492
- MONGODB_URI
@@ -1529,7 +1568,20 @@ functions:
15291568
binary: bash
15301569
args:
15311570
- .evergreen/run-csfle-tests.sh
1532-
add_expansions_to_env: true
1571+
include_expansions_in_env:
1572+
- DRIVERS_TOOLS
1573+
- PROJECT_DIRECTORY
1574+
- MONGODB_URI
1575+
- MONGOCRYPT_LIB_DIR
1576+
- OPENSSL
1577+
- OS
1578+
- LD_LIBRARY_PATH
1579+
- AWS_ACCESS_KEY_ID
1580+
- AWS_SECRET_ACCESS_KEY
1581+
- CSFLE_LOCAL_KEY
1582+
- CRYPT_SHARED_LIB_PATH
1583+
- DISABLE_CRYPT_SHARED
1584+
- AZURE_IMDS_MOCK_PORT
15331585

15341586
"run csfle serverless tests":
15351587
- command: shell.exec
@@ -1669,7 +1721,10 @@ functions:
16691721
type: test
16701722
params:
16711723
working_dir: src
1672-
add_expansions_to_env: true
1724+
include_expansions_in_env:
1725+
- DRIVERS_TOOLS
1726+
- PROJECT_DIRECTORY
1727+
- MONGOCRYPT_LIB_DIR
16731728
binary: bash
16741729
args:
16751730
- .evergreen/check-semgrep.sh

.evergreen/run-csfle-tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
set -o errexit
44
set -o pipefail
55

6-
source ./.evergreen/env.sh
6+
source .evergreen/env.sh
77
source .evergreen/cargo-test.sh
88

99
set -o xtrace

.evergreen/run-sync-tests.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#!/bin/bash
22

3-
. ${PREPARE_SHELL}
4-
53
set -o errexit
64
set -o pipefail
75

src/error.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ pub type Result<T> = std::result::Result<T, Error>;
5050
/// [`ErrorKind`](enum.ErrorKind.html) is wrapped in an `Arc` to allow the errors to be
5151
/// cloned.
5252
#[derive(Clone, Debug, Error)]
53-
#[error("Kind: {kind}, labels: {labels:?}")]
53+
#[cfg_attr(test, error("Kind: {kind}, labels: {labels:?}, backtrace: {bt}"))]
54+
#[cfg_attr(not(test), error("Kind: {kind}, labels: {labels:?}"))]
5455
#[non_exhaustive]
5556
pub struct Error {
5657
/// The type of error that occurred.
@@ -59,6 +60,8 @@ pub struct Error {
5960
pub(crate) wire_version: Option<i32>,
6061
#[source]
6162
pub(crate) source: Option<Box<Error>>,
63+
#[cfg(test)]
64+
bt: Arc<std::backtrace::Backtrace>,
6265
}
6366

6467
impl Error {
@@ -90,6 +93,8 @@ impl Error {
9093
labels,
9194
wire_version: None,
9295
source: None,
96+
#[cfg(test)]
97+
bt: Arc::new(std::backtrace::Backtrace::capture()),
9398
}
9499
}
95100

src/test/csfle.rs

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::{
22
collections::BTreeMap,
3-
env::var,
3+
env,
44
path::PathBuf,
55
sync::{
66
atomic::{AtomicBool, Ordering},
@@ -103,8 +103,8 @@ pub(crate) static AWS_KMS: Lazy<KmsInfo> = Lazy::new(|| {
103103
(
104104
KmsProvider::aws(),
105105
doc! {
106-
"accessKeyId": var("FLE_AWS_KEY").unwrap(),
107-
"secretAccessKey": var("FLE_AWS_SECRET").unwrap()},
106+
"accessKeyId": env::var("FLE_AWS_KEY").unwrap(),
107+
"secretAccessKey": env::var("FLE_AWS_SECRET").unwrap()},
108108
None,
109109
)
110110
});
@@ -116,8 +116,8 @@ pub(crate) static AWS_KMS_NAME2: Lazy<KmsInfo> = Lazy::new(|| {
116116
(
117117
KmsProvider::aws().with_name("name2"),
118118
doc! {
119-
"accessKeyId": var("FLE_AWS_KEY").unwrap(),
120-
"secretAccessKey": var("FLE_AWS_SECRET").unwrap()
119+
"accessKeyId": env::var("FLE_AWS_KEY").unwrap(),
120+
"secretAccessKey": env::var("FLE_AWS_SECRET").unwrap()
121121
},
122122
None,
123123
)
@@ -126,9 +126,9 @@ pub(crate) static AZURE_KMS: Lazy<KmsInfo> = Lazy::new(|| {
126126
(
127127
KmsProvider::azure(),
128128
doc! {
129-
"tenantId": var("FLE_AZURE_TENANTID").unwrap(),
130-
"clientId": var("FLE_AZURE_CLIENTID").unwrap(),
131-
"clientSecret": var("FLE_AZURE_CLIENTSECRET").unwrap(),
129+
"tenantId": env::var("FLE_AZURE_TENANTID").unwrap(),
130+
"clientId": env::var("FLE_AZURE_CLIENTID").unwrap(),
131+
"clientSecret": env::var("FLE_AZURE_CLIENTSECRET").unwrap(),
132132
},
133133
None,
134134
)
@@ -141,8 +141,8 @@ pub(crate) static GCP_KMS: Lazy<KmsInfo> = Lazy::new(|| {
141141
(
142142
KmsProvider::gcp(),
143143
doc! {
144-
"email": var("FLE_GCP_EMAIL").unwrap(),
145-
"privateKey": var("FLE_GCP_PRIVATEKEY").unwrap(),
144+
"email": env::var("FLE_GCP_EMAIL").unwrap(),
145+
"privateKey": env::var("FLE_GCP_PRIVATEKEY").unwrap(),
146146
},
147147
None,
148148
)
@@ -157,7 +157,7 @@ pub(crate) static LOCAL_KMS: Lazy<KmsInfo> = Lazy::new(|| {
157157
doc! {
158158
"key": bson::Binary {
159159
subtype: bson::spec::BinarySubtype::Generic,
160-
bytes: base64::decode(var("CSFLE_LOCAL_KEY").unwrap()).unwrap(),
160+
bytes: base64::decode(env::var("CSFLE_LOCAL_KEY").unwrap()).unwrap(),
161161
},
162162
},
163163
None,
@@ -168,7 +168,7 @@ pub(crate) static LOCAL_KMS_NAME1: Lazy<KmsInfo> = Lazy::new(|| {
168168
(local_info.0.with_name("name1"), local_info.1, local_info.2)
169169
});
170170
pub(crate) static KMIP_KMS: Lazy<KmsInfo> = Lazy::new(|| {
171-
let cert_dir = PathBuf::from(var("CSFLE_TLS_CERT_DIR").unwrap());
171+
let cert_dir = PathBuf::from(env::var("CSFLE_TLS_CERT_DIR").unwrap());
172172
let tls_options = TlsOptions::builder()
173173
.ca_file_path(cert_dir.join("ca.pem"))
174174
.cert_key_file_path(cert_dir.join("client.pem"))
@@ -212,14 +212,14 @@ pub(crate) static ALL_KMS_PROVIDERS: Lazy<KmsProviderList> = Lazy::new(|| {
212212
});
213213

214214
static EXTRA_OPTIONS: Lazy<Document> =
215-
Lazy::new(|| doc! { "cryptSharedLibPath": std::env::var("CRYPT_SHARED_LIB_PATH").unwrap() });
215+
Lazy::new(|| doc! { "cryptSharedLibPath": env::var("CRYPT_SHARED_LIB_PATH").unwrap() });
216216
static KV_NAMESPACE: Lazy<Namespace> =
217217
Lazy::new(|| Namespace::from_str("keyvault.datakeys").unwrap());
218218
static DISABLE_CRYPT_SHARED: Lazy<bool> =
219-
Lazy::new(|| std::env::var("DISABLE_CRYPT_SHARED").map_or(false, |s| s == "true"));
219+
Lazy::new(|| env::var("DISABLE_CRYPT_SHARED").map_or(false, |s| s == "true"));
220220

221221
fn check_env(name: &str, kmip: bool) -> bool {
222-
if std::env::var("CSFLE_LOCAL_KEY").is_err() {
222+
if env::var("CSFLE_LOCAL_KEY").is_err() {
223223
log_uncaptured(format!(
224224
"skipping csfle test {}: no kms providers configured",
225225
name
@@ -1757,7 +1757,7 @@ async fn kms_tls_options() -> Result<()> {
17571757
base_providers
17581758
}
17591759

1760-
let cert_dir = PathBuf::from(std::env::var("CSFLE_TLS_CERT_DIR").unwrap());
1760+
let cert_dir = PathBuf::from(env::var("CSFLE_TLS_CERT_DIR").unwrap());
17611761
let ca_path = cert_dir.join("ca.pem");
17621762
let key_path = cert_dir.join("client.pem");
17631763

@@ -2731,8 +2731,7 @@ async fn on_demand_aws_failure() -> Result<()> {
27312731
if !check_env("on_demand_aws_failure", false) {
27322732
return Ok(());
27332733
}
2734-
if std::env::var("AWS_ACCESS_KEY_ID").is_ok() && std::env::var("AWS_SECRET_ACCESS_KEY").is_ok()
2735-
{
2734+
if env::var("AWS_ACCESS_KEY_ID").is_ok() && env::var("AWS_SECRET_ACCESS_KEY").is_ok() {
27362735
log_uncaptured("Skipping on_demand_aws_failure: credentials set");
27372736
return Ok(());
27382737
}
@@ -2803,7 +2802,7 @@ async fn on_demand_gcp_credentials() -> Result<()> {
28032802
)
28042803
.await;
28052804

2806-
if std::env::var("ON_DEMAND_GCP_CREDS_SHOULD_SUCCEED").is_ok() {
2805+
if env::var("ON_DEMAND_GCP_CREDS_SHOULD_SUCCEED").is_ok() {
28072806
result.unwrap();
28082807
} else {
28092808
let error = result.unwrap_err();
@@ -2830,10 +2829,7 @@ async fn azure_imds() -> Result<()> {
28302829
let mut azure_exec = crate::client::csfle::state_machine::azure::ExecutorState::new()?;
28312830
azure_exec.test_host = Some((
28322831
"localhost",
2833-
std::env::var("AZURE_IMDS_MOCK_PORT")
2834-
.unwrap()
2835-
.parse()
2836-
.unwrap(),
2832+
env::var("AZURE_IMDS_MOCK_PORT").unwrap().parse().unwrap(),
28372833
));
28382834

28392835
// Case 1: Success
@@ -3220,6 +3216,7 @@ async fn range_explicit_encryption_test(
32203216
KV_NAMESPACE.clone(),
32213217
vec![LOCAL_KMS.clone()],
32223218
)?
3219+
.extra_options(EXTRA_OPTIONS.clone())
32233220
.bypass_query_analysis(true)
32243221
.build()
32253222
.await?;
@@ -3564,6 +3561,7 @@ async fn fle2_example() -> Result<()> {
35643561
KV_NAMESPACE.clone(),
35653562
vec![LOCAL_KMS.clone()],
35663563
)?
3564+
.extra_options(EXTRA_OPTIONS.clone())
35673565
.encrypted_fields_map(encrypted_fields_map)
35683566
.build()
35693567
.await?;

0 commit comments

Comments
 (0)