Skip to content

Commit c7879a0

Browse files
authored
test(e2e): stop using custom e2e binary builds (#2000)
Remove the production-crate dev-settings feature so e2e tests build the same gateway, CLI, and supervisor binaries that we ship. Move settings coverage from dummy test-only keys to the production ocsf_json_enabled setting. Signed-off-by: Simon Scatton <sscatton@nvidia.com>
1 parent 62b03f0 commit c7879a0

16 files changed

Lines changed: 73 additions & 105 deletions

File tree

‎.github/workflows/docker-build.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,13 @@ jobs:
8484
gateway)
8585
binary_component=gateway
8686
binary_name=openshell-gateway
87-
features="openshell-core/dev-settings bundled-z3"
87+
features="bundled-z3"
8888
has_image=true
8989
;;
9090
supervisor)
9191
binary_component=sandbox
9292
binary_name=openshell-sandbox
93-
features="openshell-core/dev-settings"
93+
features=""
9494
has_image=true
9595
;;
9696
cli)

‎.github/workflows/rust-native-build.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ on:
3030
description: "Cargo features to enable"
3131
required: false
3232
type: string
33-
default: "openshell-core/dev-settings"
33+
default: ""
3434
retention-days:
3535
description: "Artifact retention period"
3636
required: false

‎crates/openshell-cli/Cargo.toml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ workspace = true
8686

8787
[features]
8888
bundled-z3 = ["openshell-prover/bundled-z3"]
89-
dev-settings = ["openshell-core/dev-settings"]
9089

9190
[dev-dependencies]
9291
futures = { workspace = true }

‎crates/openshell-cli/src/run.rs‎

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8097,16 +8097,15 @@ mod tests {
80978097
));
80988098
}
80998099

8100-
#[cfg(feature = "dev-settings")]
81018100
#[test]
81028101
fn parse_cli_setting_value_parses_bool_aliases() {
8103-
let yes_value = parse_cli_setting_value("dummy_bool", "yes").expect("parse yes");
8102+
let yes_value = parse_cli_setting_value("ocsf_json_enabled", "yes").expect("parse yes");
81048103
assert_eq!(
81058104
yes_value.value,
81068105
Some(openshell_core::proto::setting_value::Value::BoolValue(true))
81078106
);
81088107

8109-
let zero_value = parse_cli_setting_value("dummy_bool", "0").expect("parse 0");
8108+
let zero_value = parse_cli_setting_value("ocsf_json_enabled", "0").expect("parse 0");
81108109
assert_eq!(
81118110
zero_value.value,
81128111
Some(openshell_core::proto::setting_value::Value::BoolValue(
@@ -8115,21 +8114,10 @@ mod tests {
81158114
);
81168115
}
81178116

8118-
#[cfg(feature = "dev-settings")]
8119-
#[test]
8120-
fn parse_cli_setting_value_parses_int_key() {
8121-
let int_value = parse_cli_setting_value("dummy_int", "42").expect("parse int");
8122-
assert_eq!(
8123-
int_value.value,
8124-
Some(openshell_core::proto::setting_value::Value::IntValue(42))
8125-
);
8126-
}
8127-
8128-
#[cfg(feature = "dev-settings")]
81298117
#[test]
81308118
fn parse_cli_setting_value_rejects_invalid_bool() {
8131-
let err =
8132-
parse_cli_setting_value("dummy_bool", "maybe").expect_err("invalid bool should fail");
8119+
let err = parse_cli_setting_value("ocsf_json_enabled", "maybe")
8120+
.expect_err("invalid bool should fail");
81338121
assert!(err.to_string().contains("invalid bool value"));
81348122
}
81358123

‎crates/openshell-core/Cargo.toml‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ default = ["telemetry"]
3333
## `--no-default-features` (plus any other features you need) for a build that
3434
## contains no telemetry endpoint, no HTTP client, and no emission code at all.
3535
telemetry = ["dep:reqwest", "dep:chrono"]
36-
## Include test-only settings (dummy_bool, dummy_int) in the registry.
37-
## Off by default so production builds have an empty registry.
38-
## Enabled by e2e tests and during development.
39-
dev-settings = []
4036
## Expose proposals::test_helpers (`ProposalsFlagGuard`) to downstream test
4137
## code in other crates. Enabled by openshell-sandbox and
4238
## openshell-supervisor-network dev builds.

‎crates/openshell-core/src/settings.rs‎

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -137,20 +137,6 @@ pub const REGISTERED_SETTINGS: &[RegisteredSetting] = &[
137137
kind: SettingValueKind::String,
138138
allowed_string_values: Some(PROPOSAL_APPROVAL_MODE_VALUES),
139139
},
140-
// Test-only keys live behind the `dev-settings` feature flag so they
141-
// don't appear in production builds.
142-
#[cfg(feature = "dev-settings")]
143-
RegisteredSetting {
144-
key: "dummy_int",
145-
kind: SettingValueKind::Int,
146-
allowed_string_values: None,
147-
},
148-
#[cfg(feature = "dev-settings")]
149-
RegisteredSetting {
150-
key: "dummy_bool",
151-
kind: SettingValueKind::Bool,
152-
allowed_string_values: None,
153-
},
154140
];
155141

156142
/// Resolve a setting descriptor from the registry by key.
@@ -187,15 +173,6 @@ mod tests {
187173
registered_keys_csv, setting_for_key,
188174
};
189175

190-
#[cfg(feature = "dev-settings")]
191-
#[test]
192-
fn setting_for_key_returns_dev_entries() {
193-
let setting = setting_for_key("dummy_bool").expect("dummy_bool should be registered");
194-
assert_eq!(setting.kind, SettingValueKind::Bool);
195-
let setting = setting_for_key("dummy_int").expect("dummy_int should be registered");
196-
assert_eq!(setting.kind, SettingValueKind::Int);
197-
}
198-
199176
#[test]
200177
fn setting_for_key_returns_none_for_unknown() {
201178
assert!(setting_for_key("nonexistent_key").is_none());

‎crates/openshell-server/Cargo.toml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ default = ["telemetry"]
105105
## that contains no telemetry endpoint, HTTP client, or emission code.
106106
telemetry = ["openshell-core/telemetry"]
107107
bundled-z3 = ["openshell-prover/bundled-z3"]
108-
dev-settings = ["openshell-core/dev-settings"]
109108
test-support = []
110109

111110
[dev-dependencies]

‎crates/openshell-server/src/grpc/policy.rs‎

Lines changed: 53 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8895,24 +8895,22 @@ mod tests {
88958895
assert!(err.message().contains("unknown setting key"));
88968896
}
88978897

8898-
#[cfg(feature = "dev-settings")]
88998898
#[test]
89008899
fn proto_setting_to_stored_rejects_type_mismatch() {
89018900
let value = SettingValue {
89028901
value: Some(setting_value::Value::StringValue("true".to_string())),
89038902
};
8904-
let err = proto_setting_to_stored("dummy_bool", &value).unwrap_err();
8903+
let err = proto_setting_to_stored("ocsf_json_enabled", &value).unwrap_err();
89058904
assert_eq!(err.code(), Code::InvalidArgument);
89068905
assert!(err.message().contains("expects bool value"));
89078906
}
89088907

8909-
#[cfg(feature = "dev-settings")]
89108908
#[test]
89118909
fn proto_setting_to_stored_accepts_bool_for_registered_bool_key() {
89128910
let value = SettingValue {
89138911
value: Some(setting_value::Value::BoolValue(true)),
89148912
};
8915-
let stored = proto_setting_to_stored("dummy_bool", &value).unwrap();
8913+
let stored = proto_setting_to_stored("ocsf_json_enabled", &value).unwrap();
89168914
assert_eq!(stored, StoredSettingValue::Bool(true));
89178915
}
89188916

@@ -8988,17 +8986,19 @@ mod tests {
89888986
);
89898987
}
89908988

8991-
#[cfg(feature = "dev-settings")]
89928989
#[test]
89938990
fn merge_effective_settings_global_overrides_sandbox_key() {
89948991
let global = StoredSettings {
89958992
revision: 2,
89968993
settings: [
89978994
(
8998-
"log_level".to_string(),
8999-
StoredSettingValue::String("warn".to_string()),
8995+
settings::PROVIDERS_V2_ENABLED_KEY.to_string(),
8996+
StoredSettingValue::Bool(false),
8997+
),
8998+
(
8999+
settings::AGENT_POLICY_PROPOSALS_ENABLED_KEY.to_string(),
9000+
StoredSettingValue::Bool(false),
90009001
),
9001-
("dummy_int".to_string(), StoredSettingValue::Int(7)),
90029002
]
90039003
.into_iter()
90049004
.collect(),
@@ -9008,50 +9008,59 @@ mod tests {
90089008
revision: 1,
90099009
settings: [
90109010
(
9011-
"log_level".to_string(),
9012-
StoredSettingValue::String("debug".to_string()),
9011+
settings::PROVIDERS_V2_ENABLED_KEY.to_string(),
9012+
StoredSettingValue::Bool(true),
9013+
),
9014+
(
9015+
"ocsf_json_enabled".to_string(),
9016+
StoredSettingValue::Bool(true),
90139017
),
9014-
("dummy_bool".to_string(), StoredSettingValue::Bool(true)),
90159018
]
90169019
.into_iter()
90179020
.collect(),
90189021
..Default::default()
90199022
};
90209023

90219024
let merged = merge_effective_settings(&global, &sandbox).unwrap();
9022-
let log_level = merged.get("log_level").expect("log_level present");
9023-
assert_eq!(log_level.scope, SettingScope::Global as i32);
9025+
let providers_v2 = merged
9026+
.get(settings::PROVIDERS_V2_ENABLED_KEY)
9027+
.expect("providers_v2_enabled present");
9028+
assert_eq!(providers_v2.scope, SettingScope::Global as i32);
90249029
assert_eq!(
9025-
log_level.value.as_ref().and_then(|v| v.value.as_ref()),
9026-
Some(&setting_value::Value::StringValue("warn".to_string()))
9030+
providers_v2.value.as_ref().and_then(|v| v.value.as_ref()),
9031+
Some(&setting_value::Value::BoolValue(false))
90279032
);
90289033

9029-
let dummy_bool = merged.get("dummy_bool").expect("dummy_bool present");
9030-
assert_eq!(dummy_bool.scope, SettingScope::Sandbox as i32);
9034+
let ocsf_json = merged
9035+
.get("ocsf_json_enabled")
9036+
.expect("ocsf_json_enabled present");
9037+
assert_eq!(ocsf_json.scope, SettingScope::Sandbox as i32);
90319038

9032-
let dummy_int = merged.get("dummy_int").expect("dummy_int present");
9033-
assert_eq!(dummy_int.scope, SettingScope::Global as i32);
9039+
let proposals = merged
9040+
.get(settings::AGENT_POLICY_PROPOSALS_ENABLED_KEY)
9041+
.expect("agent_policy_proposals_enabled present");
9042+
assert_eq!(proposals.scope, SettingScope::Global as i32);
90349043
}
90359044

9036-
#[cfg(feature = "dev-settings")]
90379045
#[test]
90389046
fn merge_effective_settings_sandbox_scoped_value_has_sandbox_scope() {
90399047
let global = StoredSettings::default();
90409048
let sandbox = StoredSettings {
90419049
revision: 1,
9042-
settings: [(
9043-
"log_level".to_string(),
9044-
StoredSettingValue::String("debug".to_string()),
9045-
)]
9046-
.into_iter()
9050+
settings: std::iter::once((
9051+
"ocsf_json_enabled".to_string(),
9052+
StoredSettingValue::Bool(true),
9053+
))
90479054
.collect(),
90489055
..Default::default()
90499056
};
90509057

90519058
let merged = merge_effective_settings(&global, &sandbox).unwrap();
9052-
let log_level = merged.get("log_level").expect("log_level present");
9053-
assert_eq!(log_level.scope, SettingScope::Sandbox as i32);
9054-
assert!(log_level.value.is_some());
9059+
let ocsf_json = merged
9060+
.get("ocsf_json_enabled")
9061+
.expect("ocsf_json_enabled present");
9062+
assert_eq!(ocsf_json.scope, SettingScope::Sandbox as i32);
9063+
assert!(ocsf_json.value.is_some());
90559064
}
90569065

90579066
#[test]
@@ -9274,9 +9283,10 @@ mod tests {
92749283
"log_level".to_string(),
92759284
StoredSettingValue::String("error".to_string()),
92769285
);
9277-
settings
9278-
.settings
9279-
.insert("dummy_bool".to_string(), StoredSettingValue::Bool(true));
9286+
settings.settings.insert(
9287+
"ocsf_json_enabled".to_string(),
9288+
StoredSettingValue::Bool(true),
9289+
);
92809290
settings.revision = 5;
92819291
save_global_settings(&store, &settings).await.unwrap();
92829292

@@ -9287,7 +9297,7 @@ mod tests {
92879297
Some(&StoredSettingValue::String("error".to_string()))
92889298
);
92899299
assert_eq!(
9290-
loaded.settings.get("dummy_bool"),
9300+
loaded.settings.get("ocsf_json_enabled"),
92919301
Some(&StoredSettingValue::Bool(true))
92929302
);
92939303
}
@@ -9298,9 +9308,10 @@ mod tests {
92989308

92999309
let sandbox_name = "my-sandbox";
93009310
let mut settings = StoredSettings::default();
9301-
settings
9302-
.settings
9303-
.insert("dummy_int".to_string(), StoredSettingValue::Int(99));
9311+
settings.settings.insert(
9312+
settings::PROPOSAL_APPROVAL_MODE_KEY.to_string(),
9313+
StoredSettingValue::String("auto".to_string()),
9314+
);
93049315
settings.revision = 3;
93059316
save_sandbox_settings(&store, sandbox_name, &settings)
93069317
.await
@@ -9309,8 +9320,8 @@ mod tests {
93099320
let loaded = load_sandbox_settings(&store, sandbox_name).await.unwrap();
93109321
assert_eq!(loaded.revision, 3);
93119322
assert_eq!(
9312-
loaded.settings.get("dummy_int"),
9313-
Some(&StoredSettingValue::Int(99))
9323+
loaded.settings.get(settings::PROPOSAL_APPROVAL_MODE_KEY),
9324+
Some(&StoredSettingValue::String("auto".to_string()))
93149325
);
93159326
}
93169327

@@ -9434,14 +9445,15 @@ mod tests {
94349445
let store = test_store().await;
94359446

94369447
let mut global = StoredSettings::default();
9437-
global
9438-
.settings
9439-
.insert("dummy_int".to_string(), StoredSettingValue::Int(42));
9448+
global.settings.insert(
9449+
"ocsf_json_enabled".to_string(),
9450+
StoredSettingValue::Bool(true),
9451+
);
94409452
global.revision = 1;
94419453
save_global_settings(&store, &global).await.unwrap();
94429454

94439455
let loaded_global = load_global_settings(&store).await.unwrap();
9444-
assert!(loaded_global.settings.contains_key("dummy_int"));
9456+
assert!(loaded_global.settings.contains_key("ocsf_json_enabled"));
94459457
}
94469458

94479459
#[tokio::test]

‎e2e/rust/e2e-docker.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
1212
E2E_TEST="${OPENSHELL_E2E_DOCKER_TEST:-smoke}"
1313
E2E_FEATURES="${OPENSHELL_E2E_DOCKER_FEATURES:-e2e,e2e-docker}"
1414

15-
cargo build -p openshell-cli --features openshell-core/dev-settings
15+
cargo build -p openshell-cli
1616

1717
exec "${ROOT}/e2e/with-docker-gateway.sh" \
1818
cargo test --manifest-path "${ROOT}/e2e/rust/Cargo.toml" \

‎e2e/rust/e2e-kubernetes.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
2121

2222
E2E_FEATURES="${OPENSHELL_E2E_KUBERNETES_FEATURES:-e2e,e2e-host-gateway,e2e-kubernetes}"
2323

24-
cargo build -p openshell-cli --features openshell-core/dev-settings
24+
cargo build -p openshell-cli
2525

2626
test_filter=()
2727
if [ -n "${OPENSHELL_E2E_KUBE_TEST:-}" ]; then

0 commit comments

Comments
 (0)