fix(obfuscation/redis): fuzzer fixes [APMSP-2670]#1694
fix(obfuscation/redis): fuzzer fixes [APMSP-2670]#1694
Conversation
Go's strings.ToUpper() handles Unicode (e.g. Cherokee small letters like ꭺ→Ꭺ), while to_ascii_uppercase() only covers ASCII. Switch to to_uppercase() to match Go's behavior. Fixes fuzzing testcase: redis_quantize_fuzzing_3286489773
…pace
Go's QuantizeRedisString uses strings.Trim(rawLine, " ") which only strips
ASCII spaces. Rust's .trim() strips all whitespace including tabs. A tab-only
input should be kept as a command ("\t"), not silently dropped.
Fixes fuzzing testcase: redis_quantize_fuzzing_2812552373
…is_string
Go's QuantizeRedisString uses strings.SplitN(line, " ", 3) to split tokens,
which only splits on ASCII spaces. Rust's split_whitespace() splits on all
whitespace including tabs, causing "\t" to yield no tokens and be dropped.
Switch to split(' ').filter(|s| !s.is_empty()) to match Go's behavior.
Fixes fuzzing testcase: redis_quantize_fuzzing_2812552373
Rust uses Unicode 16.0 which added uppercase mappings for U+16E80–U+16EFF (Bamum Supplement) that Go 1.25 (Unicode 15.0) doesn't have. Extracted a go_toupper helper that mirrors Go's unicode.ToUpper: uses to_uppercase() for single-char mappings but leaves the Bamum range unchanged to match Go.
Clippy Allow Annotation ReportComparing clippy allow annotations between branches:
Summary by Rule
Annotation Counts by File
Annotation Stats by Crate
About This ReportThis report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality. |
BenchmarksComparisonBenchmark execution time: 2026-03-09 16:18:37 Comparing candidate commit e571d6b in PR branch Found 0 performance improvements and 1 performance regressions! Performance is the same for 56 metrics, 2 unstable metrics.
|
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sql/obfuscate_sql_string | execution_time | 89.124µs | 89.377µs ± 0.174µs | 89.364µs ± 0.077µs | 89.438µs | 89.566µs | 90.203µs | 90.798µs | 1.61% | 3.914 | 26.204 | 0.19% | 0.012µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| sql/obfuscate_sql_string | execution_time | [89.353µs; 89.401µs] or [-0.027%; +0.027%] | None | None | None |
Group 2
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| write only interface | execution_time | 1.175µs | 3.242µs ± 1.434µs | 3.014µs ± 0.026µs | 3.042µs | 3.696µs | 14.189µs | 14.752µs | 389.41% | 7.284 | 54.461 | 44.11% | 0.101µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| write only interface | execution_time | [3.044µs; 3.441µs] or [-6.129%; +6.129%] | None | None | None |
Group 3
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| redis/obfuscate_redis_string | execution_time | 34.699µs | 35.200µs ± 0.820µs | 34.842µs ± 0.054µs | 34.923µs | 36.861µs | 36.899µs | 39.400µs | 13.08% | 1.997 | 3.352 | 2.32% | 0.058µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| redis/obfuscate_redis_string | execution_time | [35.086µs; 35.313µs] or [-0.323%; +0.323%] | None | None | None |
Group 4
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... | execution_time | 185.355µs | 185.795µs ± 0.221µs | 185.765µs ± 0.170µs | 185.965µs | 186.190µs | 186.270µs | 186.343µs | 0.31% | 0.305 | -0.621 | 0.12% | 0.016µs | 1 | 200 |
| normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... | throughput | 5366459.414op/s | 5382278.508op/s ± 6395.817op/s | 5383156.963op/s ± 4917.591op/s | 5387131.745op/s | 5391537.497op/s | 5394314.709op/s | 5395040.366op/s | 0.22% | -0.300 | -0.624 | 0.12% | 452.253op/s | 1 | 200 |
| normalization/normalize_name/normalize_name/bad-name | execution_time | 17.880µs | 17.963µs ± 0.037µs | 17.956µs ± 0.022µs | 17.984µs | 18.028µs | 18.093µs | 18.179µs | 1.24% | 1.527 | 5.462 | 0.21% | 0.003µs | 1 | 200 |
| normalization/normalize_name/normalize_name/bad-name | throughput | 55008424.610op/s | 55669434.561op/s ± 115455.900op/s | 55691873.284op/s ± 68801.900op/s | 55748841.631op/s | 55805835.088op/s | 55869170.445op/s | 55927701.931op/s | 0.42% | -1.495 | 5.268 | 0.21% | 8163.965op/s | 1 | 200 |
| normalization/normalize_name/normalize_name/good | execution_time | 10.303µs | 10.367µs ± 0.046µs | 10.355µs ± 0.018µs | 10.382µs | 10.452µs | 10.541µs | 10.632µs | 2.68% | 2.095 | 6.462 | 0.45% | 0.003µs | 1 | 200 |
| normalization/normalize_name/normalize_name/good | throughput | 94055410.843op/s | 96457914.330op/s ± 427110.445op/s | 96575015.012op/s ± 164326.078op/s | 96691829.303op/s | 96924271.038op/s | 96988285.757op/s | 97060763.001op/s | 0.50% | -2.041 | 6.106 | 0.44% | 30201.269op/s | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... | execution_time | [185.765µs; 185.826µs] or [-0.016%; +0.016%] | None | None | None |
| normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... | throughput | [5381392.109op/s; 5383164.907op/s] or [-0.016%; +0.016%] | None | None | None |
| normalization/normalize_name/normalize_name/bad-name | execution_time | [17.958µs; 17.968µs] or [-0.029%; +0.029%] | None | None | None |
| normalization/normalize_name/normalize_name/bad-name | throughput | [55653433.484op/s; 55685435.639op/s] or [-0.029%; +0.029%] | None | None | None |
| normalization/normalize_name/normalize_name/good | execution_time | [10.361µs; 10.374µs] or [-0.062%; +0.062%] | None | None | None |
| normalization/normalize_name/normalize_name/good | throughput | [96398720.930op/s; 96517107.730op/s] or [-0.061%; +0.061%] | None | None | None |
Group 5
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| tags/replace_trace_tags | execution_time | 2.312µs | 2.387µs ± 0.019µs | 2.388µs ± 0.004µs | 2.392µs | 2.411µs | 2.418µs | 2.419µs | 1.28% | -2.072 | 5.535 | 0.78% | 0.001µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| tags/replace_trace_tags | execution_time | [2.384µs; 2.389µs] or [-0.109%; +0.109%] | None | None | None |
Group 6
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sdk_test_data/rules-based | execution_time | 144.712µs | 146.902µs ± 1.855µs | 146.658µs ± 0.611µs | 147.284µs | 148.563µs | 154.690µs | 164.751µs | 12.34% | 5.881 | 47.707 | 1.26% | 0.131µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| sdk_test_data/rules-based | execution_time | [146.645µs; 147.159µs] or [-0.175%; +0.175%] | None | None | None |
Group 7
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| single_flag_killswitch/rules-based | execution_time | 188.212ns | 190.779ns ± 1.925ns | 190.658ns ± 1.605ns | 191.938ns | 194.421ns | 195.767ns | 197.690ns | 3.69% | 0.685 | 0.207 | 1.01% | 0.136ns | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| single_flag_killswitch/rules-based | execution_time | [190.512ns; 191.046ns] or [-0.140%; +0.140%] | None | None | None |
Group 8
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| concentrator/add_spans_to_concentrator | execution_time | 10.630ms | 10.660ms ± 0.014ms | 10.659ms ± 0.008ms | 10.667ms | 10.681ms | 10.707ms | 10.743ms | 0.79% | 1.452 | 6.012 | 0.13% | 0.001ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| concentrator/add_spans_to_concentrator | execution_time | [10.658ms; 10.662ms] or [-0.019%; +0.019%] | None | None | None |
Group 9
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| benching string interning on wordpress profile | execution_time | 161.004µs | 161.641µs ± 0.388µs | 161.559µs ± 0.143µs | 161.744µs | 162.175µs | 162.712µs | 165.198µs | 2.25% | 4.631 | 35.609 | 0.24% | 0.027µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| benching string interning on wordpress profile | execution_time | [161.587µs; 161.695µs] or [-0.033%; +0.033%] | None | None | None |
Group 10
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ip_address/quantize_peer_ip_address_benchmark | execution_time | 4.939µs | 4.999µs ± 0.039µs | 4.976µs ± 0.024µs | 5.038µs | 5.057µs | 5.061µs | 5.063µs | 1.76% | 0.292 | -1.532 | 0.78% | 0.003µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| ip_address/quantize_peer_ip_address_benchmark | execution_time | [4.994µs; 5.005µs] or [-0.108%; +0.108%] | None | None | None |
Group 11
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... | execution_time | 533.967µs | 534.778µs ± 0.618µs | 534.732µs ± 0.273µs | 534.987µs | 535.390µs | 535.703µs | 541.657µs | 1.30% | 6.978 | 74.977 | 0.12% | 0.044µs | 1 | 200 |
| normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... | throughput | 1846186.192op/s | 1869937.933op/s ± 2143.321op/s | 1870097.320op/s ± 955.368op/s | 1871067.697op/s | 1871988.834op/s | 1872686.901op/s | 1872774.703op/s | 0.14% | -6.881 | 73.535 | 0.11% | 151.556op/s | 1 | 200 |
| normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて | execution_time | 380.691µs | 381.404µs ± 0.436µs | 381.268µs ± 0.256µs | 381.659µs | 382.225µs | 382.550µs | 382.707µs | 0.38% | 0.805 | -0.080 | 0.11% | 0.031µs | 1 | 200 |
| normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて | throughput | 2612964.416op/s | 2621896.690op/s ± 2995.979op/s | 2622828.334op/s ± 1760.169op/s | 2624078.107op/s | 2625725.592op/s | 2626280.040op/s | 2626799.015op/s | 0.15% | -0.801 | -0.089 | 0.11% | 211.848op/s | 1 | 200 |
| normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters | execution_time | 190.094µs | 190.447µs ± 0.172µs | 190.430µs ± 0.114µs | 190.555µs | 190.718µs | 190.869µs | 191.057µs | 0.33% | 0.431 | 0.223 | 0.09% | 0.012µs | 1 | 200 |
| normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters | throughput | 5234026.757op/s | 5250803.273op/s ± 4727.069op/s | 5251267.424op/s ± 3153.912op/s | 5253840.305op/s | 5258181.427op/s | 5260147.713op/s | 5260565.238op/s | 0.18% | -0.426 | 0.214 | 0.09% | 334.254op/s | 1 | 200 |
| normalization/normalize_service/normalize_service/[empty string] | execution_time | 37.466µs | 37.657µs ± 0.067µs | 37.657µs ± 0.046µs | 37.700µs | 37.770µs | 37.798µs | 37.841µs | 0.49% | -0.053 | -0.098 | 0.18% | 0.005µs | 1 | 200 |
| normalization/normalize_service/normalize_service/[empty string] | throughput | 26426088.590op/s | 26555568.481op/s ± 47197.139op/s | 26555273.617op/s ± 32230.179op/s | 26590085.115op/s | 26630453.902op/s | 26660135.509op/s | 26691214.110op/s | 0.51% | 0.063 | -0.093 | 0.18% | 3337.342op/s | 1 | 200 |
| normalization/normalize_service/normalize_service/test_ASCII | execution_time | 45.776µs | 45.893µs ± 0.108µs | 45.887µs ± 0.035µs | 45.918µs | 45.963µs | 46.025µs | 47.250µs | 2.97% | 9.876 | 121.376 | 0.24% | 0.008µs | 1 | 200 |
| normalization/normalize_service/normalize_service/test_ASCII | throughput | 21164140.609op/s | 21790166.762op/s ± 50296.196op/s | 21792461.439op/s ± 16384.567op/s | 21812385.013op/s | 21830079.344op/s | 21844783.363op/s | 21845455.538op/s | 0.24% | -9.694 | 118.357 | 0.23% | 3556.478op/s | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... | execution_time | [534.692µs; 534.863µs] or [-0.016%; +0.016%] | None | None | None |
| normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... | throughput | [1869640.889op/s; 1870234.977op/s] or [-0.016%; +0.016%] | None | None | None |
| normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて | execution_time | [381.343µs; 381.464µs] or [-0.016%; +0.016%] | None | None | None |
| normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて | throughput | [2621481.476op/s; 2622311.904op/s] or [-0.016%; +0.016%] | None | None | None |
| normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters | execution_time | [190.423µs; 190.471µs] or [-0.012%; +0.012%] | None | None | None |
| normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters | throughput | [5250148.147op/s; 5251458.399op/s] or [-0.012%; +0.012%] | None | None | None |
| normalization/normalize_service/normalize_service/[empty string] | execution_time | [37.648µs; 37.666µs] or [-0.025%; +0.025%] | None | None | None |
| normalization/normalize_service/normalize_service/[empty string] | throughput | [26549027.412op/s; 26562109.551op/s] or [-0.025%; +0.025%] | None | None | None |
| normalization/normalize_service/normalize_service/test_ASCII | execution_time | [45.877µs; 45.908µs] or [-0.033%; +0.033%] | None | None | None |
| normalization/normalize_service/normalize_service/test_ASCII | throughput | [21783196.193op/s; 21797137.331op/s] or [-0.032%; +0.032%] | None | None | None |
Group 12
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| profile_add_sample2_frames_x1000 | execution_time | 716.155µs | 717.754µs ± 0.753µs | 717.690µs ± 0.385µs | 718.151µs | 718.669µs | 719.130µs | 724.345µs | 0.93% | 3.329 | 27.832 | 0.10% | 0.053µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| profile_add_sample2_frames_x1000 | execution_time | [717.650µs; 717.858µs] or [-0.015%; +0.015%] | None | None | None |
Group 13
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| two way interface | execution_time | 17.826µs | 25.744µs ± 9.320µs | 18.215µs ± 0.207µs | 34.009µs | 41.903µs | 43.607µs | 63.951µs | 251.10% | 0.870 | 0.308 | 36.11% | 0.659µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| two way interface | execution_time | [24.452µs; 27.036µs] or [-5.017%; +5.017%] | None | None | None |
Group 14
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| benching deserializing traces from msgpack to their internal representation | execution_time | 48.176ms | 48.472ms ± 1.290ms | 48.295ms ± 0.066ms | 48.371ms | 48.517ms | 55.141ms | 60.713ms | 25.71% | 8.415 | 71.690 | 2.65% | 0.091ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| benching deserializing traces from msgpack to their internal representation | execution_time | [48.294ms; 48.651ms] or [-0.369%; +0.369%] | None | None | None |
Group 15
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| receiver_entry_point/report/2597 | execution_time | 3.261ms | 3.289ms ± 0.017ms | 3.286ms ± 0.007ms | 3.294ms | 3.325ms | 3.341ms | 3.392ms | 3.24% | 2.220 | 8.149 | 0.51% | 0.001ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| receiver_entry_point/report/2597 | execution_time | [3.287ms; 3.292ms] or [-0.071%; +0.071%] | None | None | None |
Group 16
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| credit_card/is_card_number/ | execution_time | 3.892µs | 3.913µs ± 0.003µs | 3.913µs ± 0.002µs | 3.914µs | 3.918µs | 3.920µs | 3.925µs | 0.32% | -0.974 | 11.010 | 0.08% | 0.000µs | 1 | 200 |
| credit_card/is_card_number/ | throughput | 254772854.451op/s | 255560098.718op/s ± 198070.473op/s | 255582390.373op/s ± 105491.916op/s | 255680283.609op/s | 255788409.910op/s | 255874322.422op/s | 256930101.442op/s | 0.53% | 1.002 | 11.188 | 0.08% | 14005.697op/s | 1 | 200 |
| credit_card/is_card_number/ 3782-8224-6310-005 | execution_time | 79.028µs | 79.668µs ± 0.404µs | 79.590µs ± 0.310µs | 79.973µs | 80.416µs | 80.603µs | 80.850µs | 1.58% | 0.559 | -0.467 | 0.51% | 0.029µs | 1 | 200 |
| credit_card/is_card_number/ 3782-8224-6310-005 | throughput | 12368599.581op/s | 12552435.342op/s ± 63514.372op/s | 12564378.187op/s ± 48862.920op/s | 12606233.152op/s | 12637578.155op/s | 12649507.380op/s | 12653773.476op/s | 0.71% | -0.540 | -0.499 | 0.50% | 4491.144op/s | 1 | 200 |
| credit_card/is_card_number/ 378282246310005 | execution_time | 72.415µs | 72.925µs ± 0.301µs | 72.881µs ± 0.191µs | 73.105µs | 73.437µs | 73.863µs | 74.097µs | 1.67% | 0.987 | 1.190 | 0.41% | 0.021µs | 1 | 200 |
| credit_card/is_card_number/ 378282246310005 | throughput | 13495815.066op/s | 13713039.297op/s ± 56301.527op/s | 13721048.145op/s ± 36093.519op/s | 13756208.901op/s | 13787189.883op/s | 13797650.157op/s | 13809244.937op/s | 0.64% | -0.960 | 1.103 | 0.41% | 3981.119op/s | 1 | 200 |
| credit_card/is_card_number/37828224631 | execution_time | 3.892µs | 3.912µs ± 0.003µs | 3.912µs ± 0.002µs | 3.914µs | 3.916µs | 3.918µs | 3.918µs | 0.16% | -1.694 | 12.072 | 0.07% | 0.000µs | 1 | 200 |
| credit_card/is_card_number/37828224631 | throughput | 255210268.399op/s | 255620372.690op/s ± 178948.430op/s | 255621817.322op/s ± 118665.780op/s | 255727422.602op/s | 255852932.385op/s | 255908073.919op/s | 256916594.782op/s | 0.51% | 1.718 | 12.272 | 0.07% | 12653.565op/s | 1 | 200 |
| credit_card/is_card_number/378282246310005 | execution_time | 69.191µs | 69.642µs ± 0.276µs | 69.590µs ± 0.174µs | 69.817µs | 70.165µs | 70.377µs | 70.897µs | 1.88% | 1.002 | 1.601 | 0.39% | 0.019µs | 1 | 200 |
| credit_card/is_card_number/378282246310005 | throughput | 14105053.459op/s | 14359426.269op/s ± 56599.732op/s | 14369852.767op/s ± 35965.744op/s | 14401392.277op/s | 14434082.262op/s | 14449344.875op/s | 14452684.370op/s | 0.58% | -0.972 | 1.475 | 0.39% | 4002.205op/s | 1 | 200 |
| credit_card/is_card_number/37828224631000521389798 | execution_time | 52.151µs | 52.217µs ± 0.032µs | 52.212µs ± 0.023µs | 52.238µs | 52.275µs | 52.308µs | 52.333µs | 0.23% | 0.634 | 0.512 | 0.06% | 0.002µs | 1 | 200 |
| credit_card/is_card_number/37828224631000521389798 | throughput | 19108504.658op/s | 19150939.707op/s ± 11880.148op/s | 19152578.217op/s ± 8260.422op/s | 19159299.899op/s | 19168104.083op/s | 19171633.427op/s | 19175122.196op/s | 0.12% | -0.630 | 0.503 | 0.06% | 840.053op/s | 1 | 200 |
| credit_card/is_card_number/x371413321323331 | execution_time | 6.030µs | 6.039µs ± 0.012µs | 6.037µs ± 0.003µs | 6.040µs | 6.063µs | 6.077µs | 6.152µs | 1.89% | 5.435 | 41.925 | 0.19% | 0.001µs | 1 | 200 |
| credit_card/is_card_number/x371413321323331 | throughput | 162556769.788op/s | 165581888.323op/s ± 320037.939op/s | 165637099.345op/s ± 86930.525op/s | 165730614.600op/s | 165811096.754op/s | 165844435.911op/s | 165849944.935op/s | 0.13% | -5.352 | 40.725 | 0.19% | 22630.100op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/ | execution_time | 3.891µs | 3.913µs ± 0.003µs | 3.913µs ± 0.002µs | 3.914µs | 3.917µs | 3.919µs | 3.920µs | 0.18% | -1.889 | 13.600 | 0.07% | 0.000µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/ | throughput | 255103058.842op/s | 255569771.238op/s ± 192082.254op/s | 255551562.876op/s ± 117701.725op/s | 255693652.407op/s | 255821063.487op/s | 255883957.027op/s | 256998329.863op/s | 0.57% | 1.917 | 13.838 | 0.07% | 13582.266op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | execution_time | 64.135µs | 64.455µs ± 0.138µs | 64.456µs ± 0.095µs | 64.532µs | 64.661µs | 64.819µs | 64.961µs | 0.78% | 0.511 | 0.644 | 0.21% | 0.010µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | throughput | 15393862.329op/s | 15514728.864op/s ± 33065.378op/s | 15514390.898op/s ± 22800.784op/s | 15540889.063op/s | 15561407.865op/s | 15581415.378op/s | 15591993.511op/s | 0.50% | -0.496 | 0.613 | 0.21% | 2338.075op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 378282246310005 | execution_time | 57.857µs | 58.307µs ± 0.232µs | 58.318µs ± 0.101µs | 58.414µs | 58.690µs | 58.946µs | 59.228µs | 1.56% | 0.585 | 1.439 | 0.40% | 0.016µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 378282246310005 | throughput | 16883841.997op/s | 17150742.895op/s ± 67960.139op/s | 17147481.745op/s ± 29557.986op/s | 17185532.428op/s | 17259231.640op/s | 17281689.670op/s | 17283924.222op/s | 0.80% | -0.549 | 1.349 | 0.40% | 4805.508op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631 | execution_time | 3.892µs | 3.913µs ± 0.003µs | 3.912µs ± 0.002µs | 3.914µs | 3.917µs | 3.919µs | 3.919µs | 0.17% | -1.509 | 10.850 | 0.07% | 0.000µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631 | throughput | 255169681.849op/s | 255582010.565op/s ± 187042.804op/s | 255595092.575op/s ± 116333.679op/s | 255699102.582op/s | 255819248.610op/s | 255887395.605op/s | 256905129.439op/s | 0.51% | 1.532 | 11.040 | 0.07% | 13225.924op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/378282246310005 | execution_time | 54.584µs | 54.958µs ± 0.248µs | 54.929µs ± 0.167µs | 55.079µs | 55.442µs | 55.613µs | 55.830µs | 1.64% | 0.888 | 0.465 | 0.45% | 0.018µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/378282246310005 | throughput | 17911626.397op/s | 18196086.547op/s ± 81679.444op/s | 18205225.810op/s ± 55394.393op/s | 18263093.051op/s | 18296612.610op/s | 18310513.147op/s | 18320433.031op/s | 0.63% | -0.865 | 0.404 | 0.45% | 5775.609op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | execution_time | 52.147µs | 52.229µs ± 0.038µs | 52.225µs ± 0.026µs | 52.252µs | 52.303µs | 52.338µs | 52.369µs | 0.27% | 0.818 | 0.963 | 0.07% | 0.003µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | throughput | 19095249.192op/s | 19146513.260op/s ± 13951.971op/s | 19147744.848op/s ± 9390.264op/s | 19156803.802op/s | 19165766.109op/s | 19169923.675op/s | 19176491.539op/s | 0.15% | -0.813 | 0.950 | 0.07% | 986.553op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/x371413321323331 | execution_time | 6.029µs | 6.039µs ± 0.012µs | 6.036µs ± 0.003µs | 6.039µs | 6.072µs | 6.083µs | 6.103µs | 1.11% | 3.040 | 9.235 | 0.19% | 0.001µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/x371413321323331 | throughput | 163859756.617op/s | 165589307.409op/s ± 314562.199op/s | 165671032.420op/s ± 72326.043op/s | 165737953.993op/s | 165798162.478op/s | 165841789.442op/s | 165868107.327op/s | 0.12% | -3.029 | 9.152 | 0.19% | 22242.906op/s | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| credit_card/is_card_number/ | execution_time | [3.913µs; 3.913µs] or [-0.011%; +0.011%] | None | None | None |
| credit_card/is_card_number/ | throughput | [255532648.056op/s; 255587549.381op/s] or [-0.011%; +0.011%] | None | None | None |
| credit_card/is_card_number/ 3782-8224-6310-005 | execution_time | [79.612µs; 79.724µs] or [-0.070%; +0.070%] | None | None | None |
| credit_card/is_card_number/ 3782-8224-6310-005 | throughput | [12543632.861op/s; 12561237.823op/s] or [-0.070%; +0.070%] | None | None | None |
| credit_card/is_card_number/ 378282246310005 | execution_time | [72.883µs; 72.966µs] or [-0.057%; +0.057%] | None | None | None |
| credit_card/is_card_number/ 378282246310005 | throughput | [13705236.447op/s; 13720842.148op/s] or [-0.057%; +0.057%] | None | None | None |
| credit_card/is_card_number/37828224631 | execution_time | [3.912µs; 3.912µs] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number/37828224631 | throughput | [255595572.159op/s; 255645173.221op/s] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number/378282246310005 | execution_time | [69.604µs; 69.680µs] or [-0.055%; +0.055%] | None | None | None |
| credit_card/is_card_number/378282246310005 | throughput | [14351582.090op/s; 14367270.447op/s] or [-0.055%; +0.055%] | None | None | None |
| credit_card/is_card_number/37828224631000521389798 | execution_time | [52.212µs; 52.221µs] or [-0.009%; +0.009%] | None | None | None |
| credit_card/is_card_number/37828224631000521389798 | throughput | [19149293.233op/s; 19152586.182op/s] or [-0.009%; +0.009%] | None | None | None |
| credit_card/is_card_number/x371413321323331 | execution_time | [6.038µs; 6.041µs] or [-0.027%; +0.027%] | None | None | None |
| credit_card/is_card_number/x371413321323331 | throughput | [165537534.142op/s; 165626242.503op/s] or [-0.027%; +0.027%] | None | None | None |
| credit_card/is_card_number_no_luhn/ | execution_time | [3.912µs; 3.913µs] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number_no_luhn/ | throughput | [255543150.485op/s; 255596391.991op/s] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | execution_time | [64.436µs; 64.474µs] or [-0.030%; +0.030%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | throughput | [15510146.321op/s; 15519311.408op/s] or [-0.030%; +0.030%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 378282246310005 | execution_time | [58.275µs; 58.340µs] or [-0.055%; +0.055%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 378282246310005 | throughput | [17141324.273op/s; 17160161.516op/s] or [-0.055%; +0.055%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631 | execution_time | [3.912µs; 3.913µs] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631 | throughput | [255556088.231op/s; 255607932.899op/s] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number_no_luhn/378282246310005 | execution_time | [54.924µs; 54.992µs] or [-0.062%; +0.062%] | None | None | None |
| credit_card/is_card_number_no_luhn/378282246310005 | throughput | [18184766.562op/s; 18207406.533op/s] or [-0.062%; +0.062%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | execution_time | [52.224µs; 52.234µs] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | throughput | [19144579.651op/s; 19148446.869op/s] or [-0.010%; +0.010%] | None | None | None |
| credit_card/is_card_number_no_luhn/x371413321323331 | execution_time | [6.037µs; 6.041µs] or [-0.026%; +0.026%] | None | None | None |
| credit_card/is_card_number_no_luhn/x371413321323331 | throughput | [165545712.113op/s; 165632902.704op/s] or [-0.026%; +0.026%] | None | None | None |
Group 17
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| normalization/normalize_trace/test_trace | execution_time | 239.992ns | 249.606ns ± 12.402ns | 244.015ns ± 2.766ns | 251.600ns | 283.499ns | 286.833ns | 288.072ns | 18.05% | 1.828 | 2.274 | 4.96% | 0.877ns | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| normalization/normalize_trace/test_trace | execution_time | [247.887ns; 251.325ns] or [-0.689%; +0.689%] | None | None | None |
Group 18
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| benching serializing traces from their internal representation to msgpack | execution_time | 13.928ms | 13.978ms ± 0.029ms | 13.973ms ± 0.014ms | 13.988ms | 14.020ms | 14.087ms | 14.187ms | 1.53% | 2.728 | 13.803 | 0.21% | 0.002ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| benching serializing traces from their internal representation to msgpack | execution_time | [13.974ms; 13.982ms] or [-0.029%; +0.029%] | None | None | None |
Group 19
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz | e571d6b | 1773072085 | oscarld/obfuscation-redis-fuzzing-fixes |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| profile_add_sample_frames_x1000 | execution_time | 4.169ms | 4.176ms ± 0.008ms | 4.175ms ± 0.002ms | 4.177ms | 4.179ms | 4.184ms | 4.280ms | 2.52% | 11.277 | 144.633 | 0.19% | 0.001ms | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| profile_add_sample_frames_x1000 | execution_time | [4.174ms; 4.177ms] or [-0.027%; +0.027%] | None | None | None |
Baseline
Omitted due to size.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1694 +/- ##
==========================================
- Coverage 71.33% 71.03% -0.30%
==========================================
Files 427 427
Lines 62960 62973 +13
==========================================
- Hits 44914 44735 -179
- Misses 18046 18238 +192
🚀 New features to boost your workflow:
|
📚 Documentation Check Results📦
|
🔒 Cargo Deny Results✅ No issues found! 📦
|
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
There was a problem hiding this comment.
Pull request overview
This PR aims to achieve parity between this library’s Redis obfuscation/quantization behavior and the Datadog Agent’s Go implementation, based on fuzzer-discovered edge cases.
Changes:
- Adjust Redis tokenization whitespace handling to better match Go (notably spaces vs tabs between commands).
- Update Redis query quantization to match Go’s newline splitting, trimming, and Unicode uppercasing behavior.
- Tweak Redis obfuscation finalization to avoid emitting an extra trailing newline for whitespace-only trailing tokens; add a couple fuzz-derived tests.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| libdd-trace-obfuscation/src/redis_tokenizer.rs | Changes command boundary whitespace handling to treat tabs differently (Go parity). |
| libdd-trace-obfuscation/src/redis.rs | Aligns quantization splitting/trimming/uppercasing with Go behavior; adjusts obfuscation end-of-input handling; adds fuzz regression tests. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
What does this PR do?
Ran a fuzzer to find output difference between this obfuscator and the agent's obfuscator, fixed issues one by one, even the nonsensical edge cases.
Motivation
Reach 100% parity between obfuscation libs.
Additional Notes
How to test the change?
Here are the inputs this PR fixes:
redis:
\u000bჸredis:
ჸ\n\tჸredis_quantize:
\r\nredis_quantize:
\tredis_quantize:
ꭺredis_quantize:
redis_quantize:
ᛓᾜਝ\u001b੨