Skip to content

Commit 010778e

Browse files
test: Add unit tests for config overrides
1 parent ca2fe91 commit 010778e

2 files changed

Lines changed: 60 additions & 2 deletions

File tree

extra/crds.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1869,6 +1869,11 @@ spec:
18691869
opensearch.yml:
18701870
default:
18711871
jsonMergePatch: {}
1872+
description: |-
1873+
Combination of [`JsonConfigOverrides`] and [`KeyValueConfigOverrides`]
1874+
1875+
Provides a backwards-compatible way to supply config overrides either as key-value pairs or as
1876+
a JSON value.
18721877
type: object
18731878
x-kubernetes-preserve-unknown-fields: true
18741879
type: object
@@ -2559,6 +2564,11 @@ spec:
25592564
opensearch.yml:
25602565
default:
25612566
jsonMergePatch: {}
2567+
description: |-
2568+
Combination of [`JsonConfigOverrides`] and [`KeyValueConfigOverrides`]
2569+
2570+
Provides a backwards-compatible way to supply config overrides either as key-value pairs or as
2571+
a JSON value.
25622572
type: object
25632573
x-kubernetes-preserve-unknown-fields: true
25642574
type: object

rust/operator-binary/src/framework/config_overrides.rs

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,13 +243,61 @@ mod tests {
243243
#[test]
244244
fn test_json_config_overrides_from_key_value_config_overrides() {
245245
let key_value_config_overrides = KeyValueConfigOverrides {
246-
overrides: [("a".to_owned(), Some("b".to_owned()))].into(),
246+
overrides: [("key".to_owned(), Some("value".to_owned()))].into(),
247247
};
248248

249249
let actual_json_config_overrides: JsonConfigOverrides = key_value_config_overrides.into();
250250

251-
let expected_json_config_overrides = JsonConfigOverrides::JsonMergePatch(json!({"a": "b"}));
251+
let expected_json_config_overrides =
252+
JsonConfigOverrides::JsonMergePatch(json!({"key": "value"}));
252253

253254
assert_eq!(expected_json_config_overrides, actual_json_config_overrides);
254255
}
256+
257+
#[test]
258+
fn test_json_config_overrides_from_json_or_key_value_config_overrides() {
259+
let key_value_config_overrides =
260+
JsonOrKeyValueConfigOverrides::KeyValue(KeyValueConfigOverrides {
261+
overrides: [("key".to_owned(), Some("value".to_owned()))].into(),
262+
});
263+
264+
let actual_json_config_overrides: JsonConfigOverrides = key_value_config_overrides.into();
265+
266+
let expected_json_config_overrides =
267+
JsonConfigOverrides::JsonMergePatch(json!({"key": "value"}));
268+
269+
assert_eq!(expected_json_config_overrides, actual_json_config_overrides);
270+
}
271+
272+
#[test]
273+
fn test_json_or_key_value_config_overrides_merge() {
274+
let base = JsonOrKeyValueConfigOverrides::KeyValue(KeyValueConfigOverrides {
275+
overrides: [
276+
("keyA".to_owned(), Some("base A".to_owned())),
277+
("keyB".to_owned(), Some("base B".to_owned())),
278+
]
279+
.into(),
280+
});
281+
282+
let patch = JsonOrKeyValueConfigOverrides::KeyValue(KeyValueConfigOverrides {
283+
overrides: [
284+
("keyB".to_owned(), Some("patch B".to_owned())),
285+
("keyC".to_owned(), Some("patch C".to_owned())),
286+
]
287+
.into(),
288+
});
289+
290+
// The merge implementation internally converts KeyValueConfigOverrides to
291+
// JsonConfigOverrides. It is already tested in [`test_json_config_overrides_merge`] that
292+
// merging JsonConfigOverrides works. Therefore, one test case with KeyValueConfigOverrides
293+
// is sufficient.
294+
assert_eq!(
295+
JsonOrKeyValueConfigOverrides::Json(JsonConfigOverrides::JsonMergePatch(json!({
296+
"keyA": "base A",
297+
"keyB": "patch B",
298+
"keyC": "patch C"
299+
}))),
300+
merge::merge(patch, &base)
301+
);
302+
}
255303
}

0 commit comments

Comments
 (0)