mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-11 23:56:53 +00:00
test(perf): cover GET fallback metric probes (#5291)
* test(perf): cover GET fallback metric probes Co-Authored-By: heihutu <heihutu@gmail.com> * test(perf): prefer format fallback labels Co-Authored-By: heihutu <heihutu@gmail.com> * test(ilm): remove duplicate manual transition import Co-Authored-By: heihutu <heihutu@gmail.com> --------- Co-authored-by: heihutu <heihutu@gmail.com>
This commit is contained in:
@@ -1648,7 +1648,7 @@ fn classify_get_codec_streaming_object_class(
|
||||
if object_info.is_encrypted() {
|
||||
return GetCodecStreamingObjectClass::Encrypted;
|
||||
}
|
||||
if object_info.is_compressed() {
|
||||
if object_info.is_compressed() || fi.is_compressed() {
|
||||
return GetCodecStreamingObjectClass::Compressed;
|
||||
}
|
||||
if object_info.is_remote() {
|
||||
@@ -1864,20 +1864,6 @@ fn get_codec_streaming_reader_gate(
|
||||
};
|
||||
}
|
||||
|
||||
let Ok(min_size) = i64::try_from(get_codec_streaming_min_size()) else {
|
||||
return GetCodecStreamingGate {
|
||||
object_class,
|
||||
decision: GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::InvalidMinSize),
|
||||
prefer_data_blocks_first_reader_setup: false,
|
||||
};
|
||||
};
|
||||
if object_info.size < min_size {
|
||||
return GetCodecStreamingGate {
|
||||
object_class,
|
||||
decision: GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::BelowMinSize),
|
||||
prefer_data_blocks_first_reader_setup: false,
|
||||
};
|
||||
}
|
||||
if object_class == GetCodecStreamingObjectClass::Encrypted {
|
||||
return GetCodecStreamingGate {
|
||||
object_class,
|
||||
@@ -1915,6 +1901,20 @@ fn get_codec_streaming_reader_gate(
|
||||
};
|
||||
}
|
||||
}
|
||||
let Ok(min_size) = i64::try_from(get_codec_streaming_min_size()) else {
|
||||
return GetCodecStreamingGate {
|
||||
object_class,
|
||||
decision: GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::InvalidMinSize),
|
||||
prefer_data_blocks_first_reader_setup: false,
|
||||
};
|
||||
};
|
||||
if object_info.size < min_size {
|
||||
return GetCodecStreamingGate {
|
||||
object_class,
|
||||
decision: GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::BelowMinSize),
|
||||
prefer_data_blocks_first_reader_setup: false,
|
||||
};
|
||||
}
|
||||
|
||||
GetCodecStreamingGate {
|
||||
object_class,
|
||||
|
||||
@@ -5121,7 +5121,13 @@ mod tests {
|
||||
|
||||
let mut compressed_fi = fi.clone();
|
||||
insert_str(&mut compressed_fi.metadata, SUFFIX_COMPRESSION, "lz4".to_string());
|
||||
let compressed = codec_streaming_test_object_info(&compressed_fi);
|
||||
let mut compressed = codec_streaming_test_object_info(&compressed_fi);
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &compressed, &compressed_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Compressed)
|
||||
);
|
||||
|
||||
compressed.user_defined = Arc::default();
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &compressed, &compressed_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Compressed)
|
||||
@@ -5145,6 +5151,64 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn codec_streaming_format_fallbacks_precede_min_size() {
|
||||
temp_env::with_vars(
|
||||
[
|
||||
(ENV_RUSTFS_GET_CODEC_STREAMING_ENABLE, Some("true")),
|
||||
(ENV_RUSTFS_GET_CODEC_STREAMING_ROLLOUT, Some("benchmark")),
|
||||
(ENV_RUSTFS_GET_CODEC_STREAMING_BODY_COMPAT_CONFIRMED, Some("true")),
|
||||
(ENV_RUSTFS_GET_CODEC_STREAMING_HEADER_COMPAT_CONFIRMED, Some("true")),
|
||||
(ENV_RUSTFS_GET_CODEC_STREAMING_MIN_SIZE, Some("1048576")),
|
||||
],
|
||||
|| {
|
||||
let mut encrypted_fi = codec_streaming_test_fileinfo(16 * 1024, 1);
|
||||
encrypted_fi
|
||||
.metadata
|
||||
.insert("x-amz-server-side-encryption".to_string(), "AES256".to_string());
|
||||
let encrypted = codec_streaming_test_object_info(&encrypted_fi);
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &encrypted, &encrypted_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Encrypted)
|
||||
);
|
||||
|
||||
let mut compressed_fi = codec_streaming_test_fileinfo(16 * 1024, 1);
|
||||
insert_str(&mut compressed_fi.metadata, SUFFIX_COMPRESSION, "lz4".to_string());
|
||||
let compressed = codec_streaming_test_object_info(&compressed_fi);
|
||||
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &compressed, &compressed_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Compressed)
|
||||
);
|
||||
|
||||
let mut encrypted_fi = codec_streaming_test_fileinfo(16 * 1024, 1);
|
||||
encrypted_fi
|
||||
.metadata
|
||||
.insert("x-amz-server-side-encryption".to_string(), "AES256".to_string());
|
||||
let encrypted = codec_streaming_test_object_info(&encrypted_fi);
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &encrypted, &encrypted_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Encrypted)
|
||||
);
|
||||
|
||||
let mut remote_fi = codec_streaming_test_fileinfo(16 * 1024, 1);
|
||||
remote_fi.transition_status = TRANSITION_COMPLETE.to_string();
|
||||
let remote = codec_streaming_test_object_info(&remote_fi);
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &remote, &remote_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Remote)
|
||||
);
|
||||
|
||||
let multipart_fi = codec_streaming_test_fileinfo(16 * 1024, 2);
|
||||
let multipart = codec_streaming_test_object_info(&multipart_fi);
|
||||
assert_eq!(
|
||||
codec_streaming_reader_gate_for_test(&None, &multipart, &multipart_fi, true).decision,
|
||||
GetCodecStreamingDecision::Fallback(GetCodecStreamingFallbackReason::Multipart)
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn codec_streaming_engine_defaults_to_legacy_and_parses_rustfs() {
|
||||
temp_env::with_var(ENV_RUSTFS_GET_CODEC_STREAMING_ENGINE, None::<&str>, || {
|
||||
|
||||
Reference in New Issue
Block a user