tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 2dce38b87a69c142ea6c37b52c7c85da86a4f5f4
parent ce6a636d75a2aa4e0c7debd753a577eb4016ef12
Author: Jan-Erik Rediger <jrediger@mozilla.com>
Date:   Mon, 15 Dec 2025 11:00:31 +0000

Bug 2004922 - Update to Glean v66.2.0 r=TravisLong,supply-chain-reviewers,mach-reviewers,ahochheiden

Differential Revision: https://phabricator.services.mozilla.com/D275618

Diffstat:
MCargo.lock | 8++++----
MCargo.toml | 2+-
Mgfx/wr/Cargo.lock | 8++++----
Mgfx/wr/Cargo.toml | 2+-
Mgradle/libs.versions.toml | 2+-
Mpython/sites/mach.txt | 2+-
Msupply-chain/audits.toml | 7-------
Msupply-chain/imports.lock | 112+++----------------------------------------------------------------------------
Mthird_party/rust/glean-core/.cargo-checksum.json | 4++--
Mthird_party/rust/glean-core/Cargo.lock | 274++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mthird_party/rust/glean-core/Cargo.toml | 7++++++-
Mthird_party/rust/glean-core/src/core/mod.rs | 44+++++++++++++++++++++++++++-----------------
Mthird_party/rust/glean-core/src/database/mod.rs | 48++----------------------------------------------
Mthird_party/rust/glean-core/src/dispatcher/global.rs | 4++--
Mthird_party/rust/glean-core/src/dispatcher/mod.rs | 26++++++++++++++++++++------
Mthird_party/rust/glean-core/src/internal_metrics.rs | 38+-------------------------------------
Mthird_party/rust/glean-core/src/internal_pings.rs | 2+-
Mthird_party/rust/glean-core/src/lib.rs | 8++++----
Mthird_party/rust/glean-core/src/metrics/ping.rs | 9+++++++--
Mthird_party/rust/glean-core/tests/clientid_textfile.rs | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
Mthird_party/rust/glean-core/tests/common/mod.rs | 19+++++++++++++++----
Mthird_party/rust/glean/.cargo-checksum.json | 4++--
Mthird_party/rust/glean/Cargo.lock | 10+++++-----
Mthird_party/rust/glean/Cargo.toml | 4++--
Mthird_party/rust/glean/tests/health_ping.rs | 83++++++++++---------------------------------------------------------------------
Mthird_party/rust/glean/tests/health_ping_file_overwrite.rs | 7+++----
Mthird_party/rust/glean/tests/test-shutdown-blocking.sh | 2+-
Mthird_party/rust/glean/tests/test-thread-crashing.sh | 4++--
28 files changed, 487 insertions(+), 354 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -2717,9 +2717,9 @@ dependencies = [ [[package]] name = "glean" -version = "66.1.2" +version = "66.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16967309c8c9320aa752fbb700db55b543983845ad5309cb981c0df9650a530f" +checksum = "3bd66fe38baf2f972ca9fb63015533f05a11c971462a289c923270803da68b91" dependencies = [ "crossbeam-channel", "glean-core", @@ -2732,9 +2732,9 @@ dependencies = [ [[package]] name = "glean-core" -version = "66.1.2" +version = "66.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d8cb0e35e0bc8472cf75cd3ca4d448f208003ea49a524deb623bdfd7c6c882" +checksum = "416be389bdbac4b784bc226950607acaa9e56888e6fbc91ee2ac9ba5f6bbee1c" dependencies = [ "android_logger", "bincode", diff --git a/Cargo.toml b/Cargo.toml @@ -75,7 +75,7 @@ uniffi_pipeline = "0.29.3" # Shared across multiple application-services consumers. rusqlite = "0.37" # Shared across multiple glean consumers. -glean = "=66.1.2" +glean = "=66.2.0" # Explicitly specify what our profiles use. The opt-level setting here is # a total fiction; see the setup of MOZ_RUST_DEFAULT_FLAGS for what the diff --git a/gfx/wr/Cargo.lock b/gfx/wr/Cargo.lock @@ -1232,9 +1232,9 @@ dependencies = [ [[package]] name = "glean" -version = "66.1.2" +version = "66.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16967309c8c9320aa752fbb700db55b543983845ad5309cb981c0df9650a530f" +checksum = "3bd66fe38baf2f972ca9fb63015533f05a11c971462a289c923270803da68b91" dependencies = [ "crossbeam-channel", "glean-core", @@ -1247,9 +1247,9 @@ dependencies = [ [[package]] name = "glean-core" -version = "66.1.2" +version = "66.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d8cb0e35e0bc8472cf75cd3ca4d448f208003ea49a524deb623bdfd7c6c882" +checksum = "416be389bdbac4b784bc226950607acaa9e56888e6fbc91ee2ac9ba5f6bbee1c" dependencies = [ "android_logger", "bincode", diff --git a/gfx/wr/Cargo.toml b/gfx/wr/Cargo.toml @@ -10,7 +10,7 @@ resolver = "2" [workspace.dependencies] gleam = "0.15.1" -glean = "=66.1.2" +glean = "=66.2.0" [profile.release] debug = true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml @@ -77,7 +77,7 @@ ktlint = "1.8.0" spotless = "8.1.0" # Mozilla -glean = "66.1.2" +glean = "66.2.0" # Testing libraries androidx-test = "1.7.0" diff --git a/python/sites/mach.txt b/python/sites/mach.txt @@ -57,7 +57,7 @@ pth:xpcom/geckoprocesstypes_generator pth:xpcom/idl-parser # glean-sdk may not be installable if a wheel isn't available # and it has to be built from source. -pypi-optional:glean-sdk==66.1.2:telemetry will not be collected +pypi-optional:glean-sdk==66.2.0:telemetry will not be collected pypi-optional:orjson>=3.10:json operations will be slower in various tools # Mach gracefully handles the case where `psutil` is unavailable. # We aren't (yet) able to pin packages in automation, so we have to diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml @@ -1732,13 +1732,6 @@ delta = "0.6.0 -> 0.6.1" [[audits.cssparser-macros]] who = "Emilio Cobos Álvarez <emilio@crisal.io>" criteria = "safe-to-deploy" -delta = "0.6.1 -> 0.6.1@git:71b7cfe6f1cd85427ca905a41be31ca9f6af29a5" -importable = false -notes = "Only formatting changes." - -[[audits.cssparser-macros]] -who = "Emilio Cobos Álvarez <emilio@crisal.io>" -criteria = "safe-to-deploy" delta = "0.6.1 -> 0.6.1@git:aaa966d9d6ae70c4b8a62bb5e3a14c068bb7dff0" notes = "No changes from already-certified upstream, but needed because it lives in the same git repo as the cssparser crate." diff --git a/supply-chain/imports.lock b/supply-chain/imports.lock @@ -261,15 +261,15 @@ user-login = "jrmuizel" user-name = "Jeff Muizelaar" [[publisher.glean]] -version = "66.1.2" -when = "2025-11-25" +version = "66.2.0" +when = "2025-12-09" user-id = 48 user-login = "badboy" user-name = "Jan-Erik Rediger" [[publisher.glean-core]] -version = "66.1.2" -when = "2025-11-25" +version = "66.2.0" +when = "2025-12-09" user-id = 48 user-login = "badboy" user-name = "Jan-Erik Rediger" @@ -902,13 +902,6 @@ user-login = "BurntSushi" user-name = "Andrew Gallant" [[publisher.windows]] -version = "0.58.0" -when = "2024-07-03" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - -[[publisher.windows]] version = "0.62.2" when = "2025-10-06" user-id = 64539 @@ -923,13 +916,6 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows-core]] -version = "0.58.0" -when = "2024-07-03" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - -[[publisher.windows-core]] version = "0.62.2" when = "2025-10-06" user-id = 64539 @@ -944,13 +930,6 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows-implement]] -version = "0.58.0" -when = "2024-07-03" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - -[[publisher.windows-implement]] version = "0.60.2" when = "2025-10-06" user-id = 64539 @@ -958,13 +937,6 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows-interface]] -version = "0.58.0" -when = "2024-07-03" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - -[[publisher.windows-interface]] version = "0.59.3" when = "2025-10-06" user-id = 64539 @@ -986,13 +958,6 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows-result]] -version = "0.2.0" -when = "2024-07-03" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - -[[publisher.windows-result]] version = "0.4.1" when = "2025-10-06" user-id = 64539 @@ -1000,13 +965,6 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.windows-strings]] -version = "0.1.0" -when = "2024-07-03" -user-id = 64539 -user-login = "kennykerr" -user-name = "Kenny Kerr" - -[[publisher.windows-strings]] version = "0.5.1" when = "2025-10-06" user-id = 64539 @@ -1439,12 +1397,6 @@ who = "Alex Crichton <alex@alexcrichton.com>" criteria = "safe-to-deploy" delta = "0.1.25 -> 0.1.32" -[[audits.bytecode-alliance.audits.leb128]] -who = "Nick Fitzgerald <fitzgen@gmail.com>" -criteria = "safe-to-deploy" -version = "0.2.5" -notes = "I am the author of this crate." - [[audits.bytecode-alliance.audits.leb128fmt]] who = "Alex Crichton <alex@alexcrichton.com>" criteria = "safe-to-deploy" @@ -1613,26 +1565,6 @@ criteria = "safe-to-deploy" delta = "3.5.0 -> 3.6.0" notes = "Dependency updates and new optimized trait implementations, but otherwise everything looks normal." -[[audits.bytecode-alliance.audits.tinyvec]] -who = "Alex Crichton <alex@alexcrichton.com>" -criteria = "safe-to-deploy" -version = "1.6.0" -notes = """ -This crate, while it implements collections, does so without `std::*` APIs and -without `unsafe`. Skimming the crate everything looks reasonable and what one -would expect from idiomatic safe collections in Rust. -""" - -[[audits.bytecode-alliance.audits.tinyvec_macros]] -who = "Alex Crichton <alex@alexcrichton.com>" -criteria = "safe-to-deploy" -version = "0.1.0" -notes = """ -This is a trivial crate which only contains a singular macro definition which is -intended to multiplex across the internal representation of a tinyvec, -presumably. This trivially doesn't contain anything bad. -""" - [[audits.bytecode-alliance.audits.tracing-subscriber]] who = "Pat Hickey <phickey@fastly.com>" criteria = "safe-to-deploy" @@ -2697,42 +2629,6 @@ Previously reviewed during security review and the audit is grandparented in. """ aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" -[[audits.google.audits.tinyvec]] -who = "Adrian Taylor <adetaylor@chromium.org>" -criteria = "safe-to-deploy" -delta = "1.6.0 -> 1.6.1" -aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" - -[[audits.google.audits.tinyvec]] -who = "Adrian Taylor <adetaylor@chromium.org>" -criteria = "safe-to-deploy" -delta = "1.6.1 -> 1.7.0" -aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" - -[[audits.google.audits.tinyvec]] -who = "Dustin J. Mitchell <djmitche@chromium.org>" -criteria = "safe-to-deploy" -delta = "1.7.0 -> 1.8.0" -aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" - -[[audits.google.audits.tinyvec]] -who = "Adrian Taylor <adetaylor@chromium.org>" -criteria = "safe-to-deploy" -delta = "1.8.0 -> 1.8.1" -aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" - -[[audits.google.audits.tinyvec]] -who = "Daniel Cheng <dcheng@chromium.org>" -criteria = "safe-to-deploy" -delta = "1.8.1 -> 1.9.0" -notes = """ -Larger delta, but no unsafe code introduced. Deltas for: -- borsh (Binary Object Representation Serializer for Hashing) serialization/deserialization support behind the `borsh` feature. -- trait implementations to interoperate with the generic-array crate -- miscellaneous helper functions and support code, e.g. `into_vec()`. -""" -aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT" - [[audits.google.audits.tokio-stream]] who = "David Koloski <dkoloski@google.com>" criteria = "safe-to-deploy" diff --git a/third_party/rust/glean-core/.cargo-checksum.json b/third_party/rust/glean-core/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.lock":"9a18f19837e8bc6a8d2e5fc86d56eeed29aacab1b8fc80ccc0ee49eb7661bb3c","Cargo.toml":"c974fe140d1be75abe13c49754d8b26c9754639e6735e41c862249a04a9c5372","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"026495898699b54608eb4ec16074ffafc57920d80ccb59961c501a1ea28c9985","build.rs":"4857bea99c6b8c08db8818efa9d3738716f52d3acb68159323957ae52892a3eb","examples/rkv-open.rs":"0d0aaaa29b47338880ab444cece0dfa212ff114cbaf738c9a4cd6e7f10545854","src/common_metric_data.rs":"571075e47241a5f21799994033f852d0d70d0e486661287646ac61dadd11ac59","src/core/mod.rs":"ccf902058e25b2b09fa6b2a9e49c810ef6b5b93ea75678c6a1dadcfc4f7dda67","src/core_metrics.rs":"ddc750e9f4e11f88aee947360897031657aeef74fcf0f3293bd9033b78747354","src/coverage.rs":"49613fd310bd24d779472720975fbe6c97ec370a95eb55f10afa43f67539c942","src/database/mod.rs":"cdb513345466686c3c2aed1585e0463aa9522af438bd14b0ba3111f875a43966","src/debug.rs":"663f77a3335256a562afad031496ea9215e315edd608398452df514dcff0b4af","src/dispatcher/global.rs":"17493b1a5e926ca1e9c1cda2ee031773402a19183911eb80048630d60266d89e","src/dispatcher/mod.rs":"30086e2aa8b34d7bdeef6ca93c115f3f22c438dc7a9896ce8251c9e6992420ea","src/error.rs":"21b087a55727b57ec26a017bb80887c6656aa461e38e82d9ecc5ca734b8fce71","src/error_recording.rs":"32c1f58ff080cb22184bca37e356faadbfe846386880fb0898b773adb3a97d8c","src/event_database/mod.rs":"cfd584864a8300a2b441bd91558dcc64ab8130bcc9e19583edeb37a3d9622d2c","src/fd_logger.rs":"4de0eb3d50ce96669de0bb581a4a794bec2cc768f2cb5221a02e739709c098e5","src/glean.udl":"43d66c7ee56533bdac9f272f3281515ee1e2cc1d9db2c85811f37283acda2967","src/glean_metrics.rs":"eb8dcf95b7a1a5c53d880f0ff791300e6c4c5e21f0761fed7c004381bc43a230","src/histogram/exponential.rs":"101c16ef06f043c2bc8eb28684ab69c748b4bc8c6f66ed4e64ee24c0ee9a364e","src/histogram/functional.rs":"fffa12a5b2b376cf9337ee0fdd6ad7961841e441b556a4e9ef29c524f933ea2d","src/histogram/linear.rs":"9214b0c99884ce35969c397c336410d0a7e898f8cee697f6b80166b451dfa781","src/histogram/mod.rs":"b4033298bdd011542cf4243a4f64634b4b9b815aa0a7c2c662a55310298dab5e","src/internal_metrics.rs":"05c47eea0b3987f42b84726e48e19155f87df6c8423cfab32f491146f1470175","src/internal_pings.rs":"308a0437325686cdbc7b7ed2f444a972e76a06d3982c4d9551324f8e21e96a23","src/lib.rs":"550a70d4813aab66bbd693fd7e7af1842d91046fc6ee3ea62a8c1960b5cdd05f","src/lib_unit_tests.rs":"cc0ca9d21ce75fc9e8b445240d770018459b8f71f44b08a988d4ac2d25ac3c4f","src/metrics/boolean.rs":"06c6f4a7c236083f95f3a9f2bc543aa2745f8d02d25bd2dee0dfe37ca2558662","src/metrics/counter.rs":"5cdebb985fc960283926f96d2e08b9e72a70c5d6e5e27463671a64d8eb532d84","src/metrics/custom_distribution.rs":"48ec22cfa6b6481daa0152672e34f6793aab9c256192bdc3fce0f47f37c73f27","src/metrics/datetime.rs":"f38db0aae52dd2eba726b76a9a246c70e15ed9dc303c3d1df33229b9fdc3826b","src/metrics/denominator.rs":"69403002f65cf6c2a792c17f1714e4841a44283e3df19704b84cd46554a4bd21","src/metrics/dual_labeled_counter.rs":"8e1a4690f2a84d84aefbb211e3478565e440271fd53c31fae020b74e7d0ec0a7","src/metrics/event.rs":"f79103475b656b631861431e7b943956d94b1a92621f2e05d6fbca0312673c20","src/metrics/experiment.rs":"5f9278cca4e133eb8df33bbfe36d1fe0ef3eade8c09f1b46db3c4d0790515412","src/metrics/labeled.rs":"6bab38ccd297f92b54b91f6a36c39a9eaecf7573f6f761850c467e605cd0dd2b","src/metrics/memory_distribution.rs":"681ee0a15ebdd7d7f81edac0ef7e8f1e7bb0eb45414b4a95a8c33b9f215ac444","src/metrics/memory_unit.rs":"ee32e020cb303dd631457374048a3ed53a2e7cbacc29c54d17d836fb15507538","src/metrics/mod.rs":"63bbefcc54b22a066a14da6850b3a7f6c8aea2102e64678d84c66bb65f682e5d","src/metrics/numerator.rs":"de8853a691980606745895c083c22036347117b3d556de66a9d9978ec0f51168","src/metrics/object.rs":"cae8f118350e5fd7d28a810ac8d00ba7e401237f3e4fbb6233eef3874ddf8683","src/metrics/ping.rs":"6eef8ca063adb1158a66bf283fa66c2349e1551366b1f027150a45f24025b364","src/metrics/quantity.rs":"a39359e4c21ffbe687580eeac02967f12dec85ba0461ac2167a5bbd23ab7b2af","src/metrics/rate.rs":"ffde9ace03310287c7d6624b391c2168571deaf421b7e1e71fe4b771867f6a36","src/metrics/recorded_experiment.rs":"6f089534bb4e1143abf0aa43e813c9fcc864fff128a825e83f09e61e96a1f6ee","src/metrics/remote_settings_config.rs":"3beea00afd2779f1e4d2d88ed43cbce1e5a62286ea74b52f0a62236f3b34c217","src/metrics/string.rs":"6469efc8b42841ad7dd265bb77c9ed187cb175e62e006a47cc46ec677b907715","src/metrics/string_list.rs":"acb68507cddc8f3a6a90abb075d1099fe047603f4af3c776de6fa25fc5893f57","src/metrics/text.rs":"ffb9664d8eadbc858da543d27e11c9a8aff8dadfa98f4b7b92e458a7627c2a48","src/metrics/time_unit.rs":"72325065e4ac0f3562f1983bda9fe3c0ab18272011dafe03d67900a3184a8eb6","src/metrics/timespan.rs":"028245d298c800a877f614bd8832fb596ff11ea600d4e00b4967c127cbb48994","src/metrics/timing_distribution.rs":"30af0e8417176b5ec3136bbefe699e3ec7c342c0a14dac3b27f35d2b55d853b7","src/metrics/url.rs":"3efa62c1c1070319f56fb641d61f489918d716763916dcd6d6d3073b3a6f8c6f","src/metrics/uuid.rs":"3b18c899d2c1e5967b73594dd2a0ab6f2b0c220eaf2bf3d4ef7de2cb1c1e4edd","src/ping/mod.rs":"a21212c4ee31d8b60760f21b31bf320ab921aa16503cc94e2fbc2b70ea604e3f","src/scheduler.rs":"2463d406492b43e3b4544bc3b6cdeea99421b2bb04178a0cf38cd9cfcd00c5e4","src/storage/mod.rs":"dd27a2ced7f2d16fd52f680a45f8751e0d6939435b1c8f4c28a9e7bef3ccb4f0","src/system.rs":"e3d1b54e1d39cafe6f4dc7ff5021b08c879733f909951b0e1332b3efa9ed97bd","src/thread.rs":"f8504fb6cfc7b43566f232930d5075d8a759fd7339d81ff01ba73568298492c7","src/traits/boolean.rs":"fa955e81ee0ff1a3da86002347cf4713f4ccd4e7a32ecddc7e8eab6483820277","src/traits/counter.rs":"8ed21fad9163b10a4fec89c052437ada69bbda6c9fe9e912bd9a2531a3264427","src/traits/custom_distribution.rs":"3dd516a7cf62c48371ee36e7390707e049bca3bf45fefca2d6cb0d33c501df17","src/traits/datetime.rs":"6c3bae9b7e971181c4d0c39d873a424b4bd30bdab3dc9fd00027327902f628fd","src/traits/dual_labeled_counter.rs":"63cbed60be3e8d695788f0a3624507787a005a0aaf05bdd3828fdfb0890952e0","src/traits/event.rs":"f372bfce1247d59693af351f2d79023c07d4f2f1fbaa38fc0bdce1af6d218bb5","src/traits/labeled.rs":"1b2f8eea8d59e1635f64993936d880084a5e3f65cfd7a26ddf6968366890187d","src/traits/memory_distribution.rs":"9e559d2579092062da945ec1d901439b3907fdc9db2bb376b10f9a877b58f2ac","src/traits/mod.rs":"1ffab9c66d37a4759c369d805386792eb39f769d6a801e1737eb19cfdb40477f","src/traits/numerator.rs":"d5991ef6463d17127ce7c969f8a3e110ec83b59714162f04d371ac43844241a1","src/traits/object.rs":"c03bad670ec7affbc578247f9e1904e898c1870b9bf25750c5094113f995623f","src/traits/ping.rs":"8831c106c03afeb458b0b028fa1ce61f056ebf8e82bc0a171a1bff255d920748","src/traits/quantity.rs":"cff0f7fdd0ee41d0457d9ca08222f652b4649eb64e0c0fbdfa76849013012c56","src/traits/rate.rs":"4f0a3a68d78631e5d5b83cbc65bfb9a41359b4fd8874296d58adebbc914a739a","src/traits/string.rs":"594a330ca03b21128040a263b3d4c85f66aed5147ac785f036f8c537c691dfd3","src/traits/string_list.rs":"b0b46bdf8c48a7480a0144eb40bf93fbfd8086af8e5f73863676fb695fb443ba","src/traits/text.rs":"b700031c6204126e73d9ea9c36f59fe6eb0b3b5dc50696072445c4420806f80f","src/traits/timespan.rs":"95d747ade6a58428f613b8860289a369386f45a8dc2b76ba741e39cbf19cc438","src/traits/timing_distribution.rs":"20e3ff9eed201a782f35584c657af0c7430673a97afeae708e2ea893a5723b95","src/traits/url.rs":"36fa73762288c4d33dd72de1a47c1f5451d2d6e751cf293d5e0ec88ebd4f9a71","src/traits/uuid.rs":"ea31080e349166d59272a119a546870650fab3dc512d356efbc98a3254165023","src/upload/directory.rs":"b676a05ae19a937e81391d749048fd7f544c629999dd71c8198319b5534da956","src/upload/mod.rs":"0cabe040aa8711c419922bd2e00acf8e3d3af48a65f01c8be590316b957e876a","src/upload/policy.rs":"df95dacdc32977f10d28b3677d19c074a38daef90193f8fe3994ada3e5bcf08f","src/upload/request.rs":"6922ca8ca6944b414686234156b1d46bf9e6f4bf745b77ed7a767ad231970876","src/upload/result.rs":"c956266c54595d27d5e8b11abffe28fad5fea82995922618805b66cfdcc21d54","src/util.rs":"8fe16c1a1c89d9ca0fee425d81a5809c999092c0b7543d386a2b9a6d649ba130","tests/boolean.rs":"76d6014ff108cb6514d9bceb1b2b14749a55b09921f4595a5e30f1bd3546e9f0","tests/clientid_textfile.rs":"58fd74675a7d7e97e4eee6ecfc4089346d88ad1b1382b53deb9675d6a4b5e329","tests/collection_enabled.rs":"05517ad50a05e97f73b658eb854561284db1588c7f1ec736055436a0b2b64d99","tests/common/mod.rs":"be651c204ea7fc8412959a29d03a5c6ed868e20f8c06733869063dcfb18d8405","tests/counter.rs":"4c59def10e64de0d7a0241dde0267fd02c828b38be8cc67fba90a76004ca6721","tests/custom_distribution.rs":"41c593a0b4561e21f29d1a5b948de964a866253c58ca76ffefebe370fca150e0","tests/datetime.rs":"51bf8ebea3f5b99d2e5cab1d0e2cd15d750a05c5002b9dbec614ce7dc9093cf4","tests/dual_labeled_counter.rs":"e95a5713ec3faa2cbd4bfdafa9b2f4051bb7c3d7e3fd09ca4d730d5ee7d30ffe","tests/event.rs":"2321b9b80460aeaeb3583da5d475de7c6e331e95033f38313a9018056850201b","tests/labeled.rs":"01ea8db75d774f6ca864f7cc772c98c21e570511cb034e0226127a2bae7b605f","tests/memory_distribution.rs":"3d9a5b8f99e03f783e3396e4320ee4dc974c895cfef2cec0b14d2a9a9f9b736f","tests/object.rs":"8c35676e04f6ccf54a28764700915e753fc0355bfa5d7804d72caba66fd564cd","tests/ping.rs":"eff68d3b47b04c58d8123214dd66e8d06d11f82ed3fd4f703224f84effb319bb","tests/ping_maker.rs":"e4b834336dc8114531746a3c47a8c28c7ae9831856c06d9c0ce26a1167e4fcfd","tests/quantity.rs":"55e7dca346fd1d27f0974b78ca3fb12427cb5da2ee637afc08a54f360f947361","tests/rate.rs":"3766230e31cc4ab960f916b4c2f9208cc8542ecea0749298197f547b745440e9","tests/storage.rs":"990dd1d13b9ffa8af0686977a6ac3502c6befb9eaa83649587e2660f51c596c9","tests/string.rs":"397fcfd27c25f0e81e2a40db3265b0d7dc0dd56b190319c1f86cb1c2c0ed4f9d","tests/string_list.rs":"34efa2afe3e89e6635f21ec9c80650d5816e35e9cb85163d894d600a5b3a4e3a","tests/test-rkv-cases.sh":"1df53d64ba03ff60b242afb79099fb1a5847a7d29b4b8f6e3fa8d75bdeff1d71","tests/text.rs":"c3449e0dd8d774a60f47e39752c16951b8723eeea11c6a01d7fa7d3536285773","tests/timespan.rs":"3d05739a93f3e0ea7264e8fdea876bd948714e5b44e82b8fd7c0218fdb597bb3","tests/timing_distribution.rs":"072ad950b2162e503150e411119b9a000573538bd2cff93c1c1a3616d1589ef4","tests/uuid.rs":"e0e58614319f5e973126f5b4e68d9289ccd6d65e428aca215bf7dcc8a0504889","uniffi.toml":"6ddc98b686b0925a81abd9d1c769e5c98ac29771b210a1c535931a46dec9a8e3"},"package":"b8d8cb0e35e0bc8472cf75cd3ca4d448f208003ea49a524deb623bdfd7c6c882"} -\ No newline at end of file +{"files":{"Cargo.lock":"a7231050c0d7ee4111735842a7c44e3bd8c78bd31e110f594b1b5e013eff8b41","Cargo.toml":"0fdedfc7d20cb661f1a878ba8370f62b4db7a5bfae90788a22ca78e925a13892","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"026495898699b54608eb4ec16074ffafc57920d80ccb59961c501a1ea28c9985","build.rs":"4857bea99c6b8c08db8818efa9d3738716f52d3acb68159323957ae52892a3eb","examples/rkv-open.rs":"0d0aaaa29b47338880ab444cece0dfa212ff114cbaf738c9a4cd6e7f10545854","src/common_metric_data.rs":"571075e47241a5f21799994033f852d0d70d0e486661287646ac61dadd11ac59","src/core/mod.rs":"836527e8f655d7205c9809340450eec947facd66ca31638a024af361ddaa808b","src/core_metrics.rs":"ddc750e9f4e11f88aee947360897031657aeef74fcf0f3293bd9033b78747354","src/coverage.rs":"49613fd310bd24d779472720975fbe6c97ec370a95eb55f10afa43f67539c942","src/database/mod.rs":"175b2be87bd198485c12409b708415b5a13e53a78c0f4e92729d2379ed618880","src/debug.rs":"663f77a3335256a562afad031496ea9215e315edd608398452df514dcff0b4af","src/dispatcher/global.rs":"baadcfe97eaac490a6b08479e8b4a45598445f5a9e6663ebf3095ee5f4f2a188","src/dispatcher/mod.rs":"b52e27140539f9349a7721e4e3329e3f002168664353b31fa1c7d843fb3a762d","src/error.rs":"21b087a55727b57ec26a017bb80887c6656aa461e38e82d9ecc5ca734b8fce71","src/error_recording.rs":"32c1f58ff080cb22184bca37e356faadbfe846386880fb0898b773adb3a97d8c","src/event_database/mod.rs":"cfd584864a8300a2b441bd91558dcc64ab8130bcc9e19583edeb37a3d9622d2c","src/fd_logger.rs":"4de0eb3d50ce96669de0bb581a4a794bec2cc768f2cb5221a02e739709c098e5","src/glean.udl":"43d66c7ee56533bdac9f272f3281515ee1e2cc1d9db2c85811f37283acda2967","src/glean_metrics.rs":"eb8dcf95b7a1a5c53d880f0ff791300e6c4c5e21f0761fed7c004381bc43a230","src/histogram/exponential.rs":"101c16ef06f043c2bc8eb28684ab69c748b4bc8c6f66ed4e64ee24c0ee9a364e","src/histogram/functional.rs":"fffa12a5b2b376cf9337ee0fdd6ad7961841e441b556a4e9ef29c524f933ea2d","src/histogram/linear.rs":"9214b0c99884ce35969c397c336410d0a7e898f8cee697f6b80166b451dfa781","src/histogram/mod.rs":"b4033298bdd011542cf4243a4f64634b4b9b815aa0a7c2c662a55310298dab5e","src/internal_metrics.rs":"fea338bbfe77498ceb5810a7387e78f9f07c82728f6ec3d026ddcaa1b09e5230","src/internal_pings.rs":"2b90557ace5177cbf12e53889c79a572c3772ebfb2a61ef7d42cef89467263b8","src/lib.rs":"1fc685c3b8542356d3cf31b58366f579073c6fad80f2388e0f66bd212785bd47","src/lib_unit_tests.rs":"cc0ca9d21ce75fc9e8b445240d770018459b8f71f44b08a988d4ac2d25ac3c4f","src/metrics/boolean.rs":"06c6f4a7c236083f95f3a9f2bc543aa2745f8d02d25bd2dee0dfe37ca2558662","src/metrics/counter.rs":"5cdebb985fc960283926f96d2e08b9e72a70c5d6e5e27463671a64d8eb532d84","src/metrics/custom_distribution.rs":"48ec22cfa6b6481daa0152672e34f6793aab9c256192bdc3fce0f47f37c73f27","src/metrics/datetime.rs":"f38db0aae52dd2eba726b76a9a246c70e15ed9dc303c3d1df33229b9fdc3826b","src/metrics/denominator.rs":"69403002f65cf6c2a792c17f1714e4841a44283e3df19704b84cd46554a4bd21","src/metrics/dual_labeled_counter.rs":"8e1a4690f2a84d84aefbb211e3478565e440271fd53c31fae020b74e7d0ec0a7","src/metrics/event.rs":"f79103475b656b631861431e7b943956d94b1a92621f2e05d6fbca0312673c20","src/metrics/experiment.rs":"5f9278cca4e133eb8df33bbfe36d1fe0ef3eade8c09f1b46db3c4d0790515412","src/metrics/labeled.rs":"6bab38ccd297f92b54b91f6a36c39a9eaecf7573f6f761850c467e605cd0dd2b","src/metrics/memory_distribution.rs":"681ee0a15ebdd7d7f81edac0ef7e8f1e7bb0eb45414b4a95a8c33b9f215ac444","src/metrics/memory_unit.rs":"ee32e020cb303dd631457374048a3ed53a2e7cbacc29c54d17d836fb15507538","src/metrics/mod.rs":"63bbefcc54b22a066a14da6850b3a7f6c8aea2102e64678d84c66bb65f682e5d","src/metrics/numerator.rs":"de8853a691980606745895c083c22036347117b3d556de66a9d9978ec0f51168","src/metrics/object.rs":"cae8f118350e5fd7d28a810ac8d00ba7e401237f3e4fbb6233eef3874ddf8683","src/metrics/ping.rs":"065e3203b7c82a88937c5241be5964ee2d12f9c8404c57f7fd2e15a5cf7f0469","src/metrics/quantity.rs":"a39359e4c21ffbe687580eeac02967f12dec85ba0461ac2167a5bbd23ab7b2af","src/metrics/rate.rs":"ffde9ace03310287c7d6624b391c2168571deaf421b7e1e71fe4b771867f6a36","src/metrics/recorded_experiment.rs":"6f089534bb4e1143abf0aa43e813c9fcc864fff128a825e83f09e61e96a1f6ee","src/metrics/remote_settings_config.rs":"3beea00afd2779f1e4d2d88ed43cbce1e5a62286ea74b52f0a62236f3b34c217","src/metrics/string.rs":"6469efc8b42841ad7dd265bb77c9ed187cb175e62e006a47cc46ec677b907715","src/metrics/string_list.rs":"acb68507cddc8f3a6a90abb075d1099fe047603f4af3c776de6fa25fc5893f57","src/metrics/text.rs":"ffb9664d8eadbc858da543d27e11c9a8aff8dadfa98f4b7b92e458a7627c2a48","src/metrics/time_unit.rs":"72325065e4ac0f3562f1983bda9fe3c0ab18272011dafe03d67900a3184a8eb6","src/metrics/timespan.rs":"028245d298c800a877f614bd8832fb596ff11ea600d4e00b4967c127cbb48994","src/metrics/timing_distribution.rs":"30af0e8417176b5ec3136bbefe699e3ec7c342c0a14dac3b27f35d2b55d853b7","src/metrics/url.rs":"3efa62c1c1070319f56fb641d61f489918d716763916dcd6d6d3073b3a6f8c6f","src/metrics/uuid.rs":"3b18c899d2c1e5967b73594dd2a0ab6f2b0c220eaf2bf3d4ef7de2cb1c1e4edd","src/ping/mod.rs":"a21212c4ee31d8b60760f21b31bf320ab921aa16503cc94e2fbc2b70ea604e3f","src/scheduler.rs":"2463d406492b43e3b4544bc3b6cdeea99421b2bb04178a0cf38cd9cfcd00c5e4","src/storage/mod.rs":"dd27a2ced7f2d16fd52f680a45f8751e0d6939435b1c8f4c28a9e7bef3ccb4f0","src/system.rs":"e3d1b54e1d39cafe6f4dc7ff5021b08c879733f909951b0e1332b3efa9ed97bd","src/thread.rs":"f8504fb6cfc7b43566f232930d5075d8a759fd7339d81ff01ba73568298492c7","src/traits/boolean.rs":"fa955e81ee0ff1a3da86002347cf4713f4ccd4e7a32ecddc7e8eab6483820277","src/traits/counter.rs":"8ed21fad9163b10a4fec89c052437ada69bbda6c9fe9e912bd9a2531a3264427","src/traits/custom_distribution.rs":"3dd516a7cf62c48371ee36e7390707e049bca3bf45fefca2d6cb0d33c501df17","src/traits/datetime.rs":"6c3bae9b7e971181c4d0c39d873a424b4bd30bdab3dc9fd00027327902f628fd","src/traits/dual_labeled_counter.rs":"63cbed60be3e8d695788f0a3624507787a005a0aaf05bdd3828fdfb0890952e0","src/traits/event.rs":"f372bfce1247d59693af351f2d79023c07d4f2f1fbaa38fc0bdce1af6d218bb5","src/traits/labeled.rs":"1b2f8eea8d59e1635f64993936d880084a5e3f65cfd7a26ddf6968366890187d","src/traits/memory_distribution.rs":"9e559d2579092062da945ec1d901439b3907fdc9db2bb376b10f9a877b58f2ac","src/traits/mod.rs":"1ffab9c66d37a4759c369d805386792eb39f769d6a801e1737eb19cfdb40477f","src/traits/numerator.rs":"d5991ef6463d17127ce7c969f8a3e110ec83b59714162f04d371ac43844241a1","src/traits/object.rs":"c03bad670ec7affbc578247f9e1904e898c1870b9bf25750c5094113f995623f","src/traits/ping.rs":"8831c106c03afeb458b0b028fa1ce61f056ebf8e82bc0a171a1bff255d920748","src/traits/quantity.rs":"cff0f7fdd0ee41d0457d9ca08222f652b4649eb64e0c0fbdfa76849013012c56","src/traits/rate.rs":"4f0a3a68d78631e5d5b83cbc65bfb9a41359b4fd8874296d58adebbc914a739a","src/traits/string.rs":"594a330ca03b21128040a263b3d4c85f66aed5147ac785f036f8c537c691dfd3","src/traits/string_list.rs":"b0b46bdf8c48a7480a0144eb40bf93fbfd8086af8e5f73863676fb695fb443ba","src/traits/text.rs":"b700031c6204126e73d9ea9c36f59fe6eb0b3b5dc50696072445c4420806f80f","src/traits/timespan.rs":"95d747ade6a58428f613b8860289a369386f45a8dc2b76ba741e39cbf19cc438","src/traits/timing_distribution.rs":"20e3ff9eed201a782f35584c657af0c7430673a97afeae708e2ea893a5723b95","src/traits/url.rs":"36fa73762288c4d33dd72de1a47c1f5451d2d6e751cf293d5e0ec88ebd4f9a71","src/traits/uuid.rs":"ea31080e349166d59272a119a546870650fab3dc512d356efbc98a3254165023","src/upload/directory.rs":"b676a05ae19a937e81391d749048fd7f544c629999dd71c8198319b5534da956","src/upload/mod.rs":"0cabe040aa8711c419922bd2e00acf8e3d3af48a65f01c8be590316b957e876a","src/upload/policy.rs":"df95dacdc32977f10d28b3677d19c074a38daef90193f8fe3994ada3e5bcf08f","src/upload/request.rs":"6922ca8ca6944b414686234156b1d46bf9e6f4bf745b77ed7a767ad231970876","src/upload/result.rs":"c956266c54595d27d5e8b11abffe28fad5fea82995922618805b66cfdcc21d54","src/util.rs":"8fe16c1a1c89d9ca0fee425d81a5809c999092c0b7543d386a2b9a6d649ba130","tests/boolean.rs":"76d6014ff108cb6514d9bceb1b2b14749a55b09921f4595a5e30f1bd3546e9f0","tests/clientid_textfile.rs":"92b28280321c0e0994820cd0e0b5fbb4d49990c65d36de451389720d0d270666","tests/collection_enabled.rs":"05517ad50a05e97f73b658eb854561284db1588c7f1ec736055436a0b2b64d99","tests/common/mod.rs":"d086cbaf7ab330d10e91ebceb709d77b48d481735499ccbf59f68ec662ca7230","tests/counter.rs":"4c59def10e64de0d7a0241dde0267fd02c828b38be8cc67fba90a76004ca6721","tests/custom_distribution.rs":"41c593a0b4561e21f29d1a5b948de964a866253c58ca76ffefebe370fca150e0","tests/datetime.rs":"51bf8ebea3f5b99d2e5cab1d0e2cd15d750a05c5002b9dbec614ce7dc9093cf4","tests/dual_labeled_counter.rs":"e95a5713ec3faa2cbd4bfdafa9b2f4051bb7c3d7e3fd09ca4d730d5ee7d30ffe","tests/event.rs":"2321b9b80460aeaeb3583da5d475de7c6e331e95033f38313a9018056850201b","tests/labeled.rs":"01ea8db75d774f6ca864f7cc772c98c21e570511cb034e0226127a2bae7b605f","tests/memory_distribution.rs":"3d9a5b8f99e03f783e3396e4320ee4dc974c895cfef2cec0b14d2a9a9f9b736f","tests/object.rs":"8c35676e04f6ccf54a28764700915e753fc0355bfa5d7804d72caba66fd564cd","tests/ping.rs":"eff68d3b47b04c58d8123214dd66e8d06d11f82ed3fd4f703224f84effb319bb","tests/ping_maker.rs":"e4b834336dc8114531746a3c47a8c28c7ae9831856c06d9c0ce26a1167e4fcfd","tests/quantity.rs":"55e7dca346fd1d27f0974b78ca3fb12427cb5da2ee637afc08a54f360f947361","tests/rate.rs":"3766230e31cc4ab960f916b4c2f9208cc8542ecea0749298197f547b745440e9","tests/storage.rs":"990dd1d13b9ffa8af0686977a6ac3502c6befb9eaa83649587e2660f51c596c9","tests/string.rs":"397fcfd27c25f0e81e2a40db3265b0d7dc0dd56b190319c1f86cb1c2c0ed4f9d","tests/string_list.rs":"34efa2afe3e89e6635f21ec9c80650d5816e35e9cb85163d894d600a5b3a4e3a","tests/test-rkv-cases.sh":"1df53d64ba03ff60b242afb79099fb1a5847a7d29b4b8f6e3fa8d75bdeff1d71","tests/text.rs":"c3449e0dd8d774a60f47e39752c16951b8723eeea11c6a01d7fa7d3536285773","tests/timespan.rs":"3d05739a93f3e0ea7264e8fdea876bd948714e5b44e82b8fd7c0218fdb597bb3","tests/timing_distribution.rs":"072ad950b2162e503150e411119b9a000573538bd2cff93c1c1a3616d1589ef4","tests/uuid.rs":"e0e58614319f5e973126f5b4e68d9289ccd6d65e428aca215bf7dcc8a0504889","uniffi.toml":"6ddc98b686b0925a81abd9d1c769e5c98ac29771b210a1c535931a46dec9a8e3"},"package":"416be389bdbac4b784bc226950607acaa9e56888e6fbc91ee2ac9ba5f6bbee1c"} +\ No newline at end of file diff --git a/third_party/rust/glean-core/Cargo.lock b/third_party/rust/glean-core/Cargo.lock @@ -42,6 +42,18 @@ dependencies = [ ] [[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] name = "anyhow" version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -153,6 +165,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" [[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] name = "cc" version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -183,6 +201,58 @@ dependencies = [ ] [[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "4.5.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.5.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" +dependencies = [ + "anstyle", + "clap_lex", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] name = "core-foundation-sys" version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -198,6 +268,39 @@ dependencies = [ ] [[package]] +name = "criterion" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" +dependencies = [ + "cast", + "itertools", +] + +[[package]] name = "crossbeam-channel" version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -207,12 +310,38 @@ dependencies = [ ] [[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] name = "crossbeam-utils" version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + +[[package]] name = "ctor" version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -233,6 +362,12 @@ dependencies = [ ] [[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] name = "env_logger" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -316,11 +451,12 @@ dependencies = [ [[package]] name = "glean-core" -version = "66.1.2" +version = "66.2.0" dependencies = [ "android_logger", "bincode", "chrono", + "criterion", "crossbeam-channel", "ctor", "env_logger", @@ -359,6 +495,16 @@ dependencies = [ ] [[package]] +name = "half" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7db2ff139bba50379da6aa0766b52fdcb62cb5b263009b09ed58ba604e14bbd1" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] name = "hashbrown" version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -445,6 +591,15 @@ dependencies = [ ] [[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] name = "itoa" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -552,6 +707,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + +[[package]] name = "ordered-float" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -584,6 +745,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] name = "proc-macro2" version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -602,6 +791,26 @@ dependencies = [ ] [[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] name = "redox_syscall" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -611,6 +820,21 @@ dependencies = [ ] [[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] name = "rkv" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -664,6 +888,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] name = "scroll" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -798,6 +1031,16 @@ dependencies = [ ] [[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] name = "tinyvec" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -991,6 +1234,16 @@ dependencies = [ ] [[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1055,6 +1308,16 @@ dependencies = [ ] [[package]] +name = "web-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] name = "weedle2" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1080,6 +1343,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + +[[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/third_party/rust/glean-core/Cargo.toml b/third_party/rust/glean-core/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.82" name = "glean-core" -version = "66.1.2" +version = "66.2.0" authors = [ "Jan-Erik Rediger <jrediger@mozilla.com>", "The Glean Team <glean-team@mozilla.com>", @@ -45,6 +45,7 @@ glean-parser = "18.0.6" [lib] name = "glean_core" path = "src/lib.rs" +bench = false [[example]] name = "rkv-open" @@ -197,6 +198,9 @@ features = ["v4"] [dependencies.zeitstempel] version = "0.2.0" +[dev-dependencies.criterion] +version = "0.7.0" + [dev-dependencies.ctor] version = "0.2.2" @@ -217,6 +221,7 @@ features = ["build"] default-features = false [features] +benchmark = [] enable_env_logger = ["env_logger"] gecko = [] diff --git a/third_party/rust/glean-core/src/core/mod.rs b/third_party/rust/glean-core/src/core/mod.rs @@ -39,6 +39,11 @@ use crate::{ const CLIENT_ID_PLAIN_FILENAME: &str = "client_id.txt"; static GLEAN: OnceCell<Mutex<Glean>> = OnceCell::new(); +/// Rate limiting defaults +/// 15 pings every 60 seconds. +pub const DEFAULT_SECONDS_PER_INTERVAL: u64 = 60; +pub const DEFAULT_PINGS_PER_INTERVAL: u32 = 15; + pub fn global_glean() -> Option<&'static Mutex<Glean>> { GLEAN.get() } @@ -202,8 +207,8 @@ impl Glean { // Create an upload manager with rate limiting of 15 pings every 60 seconds. let mut upload_manager = PingUploadManager::new(&cfg.data_path, &cfg.language_binding_name); let rate_limit = cfg.rate_limit.as_ref().unwrap_or(&PingRateLimit { - seconds_per_interval: 60, - pings_per_interval: 15, + seconds_per_interval: DEFAULT_SECONDS_PER_INTERVAL, + pings_per_interval: DEFAULT_PINGS_PER_INTERVAL, }); upload_manager.set_rate_limiter( rate_limit.seconds_per_interval, @@ -294,6 +299,11 @@ impl Glean { Ok(id) => Some(id), Err(ClientIdFileError::NotFound) => { // That's ok, the file might just not exist yet. + glean + .health_metrics + .file_read_error + .get("file-not-found") + .add_sync(&glean, 1); None } Err(ClientIdFileError::PermissionDenied) => { @@ -331,14 +341,13 @@ impl Glean { { let data_store = glean.data_store.as_ref().unwrap(); - let db_load_sizes = data_store.load_sizes.as_ref().unwrap(); - let new_size = db_load_sizes.new.unwrap_or(0); + let file_size = data_store.file_size.map(|n| n.get()).unwrap_or(0); // If we have a client ID on disk, we check the database if let Some(stored_client_id) = stored_client_id { // state (c) - if new_size <= 0 { - log::trace!("no database. database size={new_size}. stored_client_id={stored_client_id}"); + if file_size == 0 { + log::trace!("no database. database size={file_size}. stored_client_id={stored_client_id}"); // state (d) glean .health_metrics @@ -350,6 +359,10 @@ impl Glean { .set_sync(&glean, ExceptionState::EmptyDb); // state (e) -- mitigation: store recovered client ID in DB + glean + .core_metrics + .client_id + .set_from_uuid_sync(&glean, stored_client_id); } else { let db_client_id = glean .core_metrics @@ -366,6 +379,10 @@ impl Glean { .set_sync(&glean, ExceptionState::RegenDb); // state (e) -- mitigation: store recovered client ID in DB + glean + .core_metrics + .client_id + .set_from_uuid_sync(&glean, stored_client_id); } Some(db_client_id) if db_client_id == *KNOWN_CLIENT_ID => { // state (i) @@ -383,6 +400,10 @@ impl Glean { // If we have a recovered client ID we also overwrite the database. // state (e) + glean + .core_metrics + .client_id + .set_from_uuid_sync(&glean, stored_client_id); } Some(db_client_id) if db_client_id == stored_client_id => { // all valid. nothing to do @@ -668,17 +689,6 @@ impl Glean { .rkv_load_error .set_sync(self, rkv_load_state) } - - if let Some(load_sizes) = self - .data_store - .as_mut() - .and_then(|database| database.load_sizes()) - { - self.database_metrics.load_sizes.set_sync( - self, - serde_json::to_value(load_sizes).unwrap_or(serde_json::json!({})), - ); - } } /// Signals that the environment is ready to submit pings. diff --git a/third_party/rust/glean-core/src/database/mod.rs b/third_party/rust/glean-core/src/database/mod.rs @@ -14,7 +14,6 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::RwLock; use std::time::{Duration, Instant}; -use crate::internal_metrics::LoadSizesObject; use crate::ErrorKind; use malloc_size_of::MallocSizeOf; @@ -137,7 +136,7 @@ pub struct Database { ping_lifetime_max_time: Duration, /// Initial file size when opening the database. - file_size: Option<NonZeroU64>, + pub(crate) file_size: Option<NonZeroU64>, /// RKV load state rkv_load_state: RkvLoadState, @@ -145,9 +144,6 @@ pub struct Database { /// Times an Rkv write-commit took. /// Re-applied as samples in a timing distribution later. pub(crate) write_timings: RefCell<Vec<i64>>, - - /// The database size at various phases of loading. - pub(crate) load_sizes: Option<LoadSizesObject>, } impl MallocSizeOf for Database { @@ -217,12 +213,6 @@ fn database_size(dir: &Path) -> Option<NonZeroU64> { NonZeroU64::new(total_size) } -fn store_size(rkv: &Rkv, store: &SingleStore) -> Result<i64> { - let reader = rkv.read()?; - let iter = store.iter_start(&reader)?; - Ok(iter.count().try_into().unwrap_or(-1)) -} - impl Database { /// Initializes the data store. /// @@ -238,33 +228,14 @@ impl Database { ping_lifetime_max_time: Duration, ) -> Result<Self> { let path = data_path.join("db"); - let mut load_sizes = LoadSizesObject { - new: database_size(&path).map(|x| x.get() as i64), - ..Default::default() - }; log::debug!("Database path: {:?}", path.display()); let file_size = database_size(&path); - load_sizes.open = file_size.map(|x| x.get() as i64); let (rkv, rkv_load_state) = Self::open_rkv(&path)?; - load_sizes.post_open = database_size(&path).map(|x| x.get() as i64); let user_store = rkv.open_single(Lifetime::User.as_str(), StoreOptions::create())?; - match store_size(&rkv, &user_store) { - Ok(record_count) => load_sizes.user_records = Some(record_count), - Err(e) => load_sizes.error = Some(e.to_string()), - }; - load_sizes.post_open_user = database_size(&path).map(|x| x.get() as i64); let ping_store = rkv.open_single(Lifetime::Ping.as_str(), StoreOptions::create())?; - match store_size(&rkv, &ping_store) { - Ok(record_count) => load_sizes.ping_records = Some(record_count), - Err(e) => load_sizes.error = Some(e.to_string()), - }; let application_store = rkv.open_single(Lifetime::Application.as_str(), StoreOptions::create())?; - match store_size(&rkv, &application_store) { - Ok(record_count) => load_sizes.application_records = Some(record_count), - Err(e) => load_sizes.error = Some(e.to_string()), - }; let ping_lifetime_data = if delay_ping_lifetime_io { Some(RwLock::new(BTreeMap::new())) } else { @@ -277,7 +248,7 @@ impl Database { let now = Instant::now(); - let mut db = Self { + let db = Self { rkv, user_store, ping_store, @@ -290,19 +261,9 @@ impl Database { file_size, rkv_load_state, write_timings, - load_sizes: Some(load_sizes), }; db.load_ping_lifetime_data(); - // Safe unwrap: just set it to Some above. - db.load_sizes.as_mut().unwrap().post_load_ping_lifetime_data = - database_size(&path).map(|x| x.get() as i64); - if let Some(ref ping_data) = db.ping_lifetime_data { - // Safe unwrap: just set load_sizes to Some above. - // Safe unwrap: Unless the read lock is poisoned (already?!). - db.load_sizes.as_mut().unwrap().ping_memory_records = - Some(ping_data.read().unwrap().len().try_into().unwrap_or(-1)); - } Ok(db) } @@ -321,11 +282,6 @@ impl Database { } } - /// Get the load events. - pub fn load_sizes(&mut self) -> Option<LoadSizesObject> { - self.load_sizes.take() - } - fn get_store(&self, lifetime: Lifetime) -> &SingleStore { match lifetime { Lifetime::User => &self.user_store, diff --git a/third_party/rust/glean-core/src/dispatcher/global.rs b/third_party/rust/glean-core/src/dispatcher/global.rs @@ -58,7 +58,7 @@ pub fn launch(task: impl FnOnce() + Send + 'static) { // TODO: Record this as an error. } Err(_) => { - log::info!("Failed to launch a task on the queue. Discarding task."); + log::debug!("Failed to launch a task on the queue. Discarding task."); } } @@ -127,7 +127,7 @@ pub fn shutdown() -> Result<(), DispatchError> { /// TEST ONLY FUNCTION. /// Resets the Glean state and triggers init again. -pub(crate) fn reset_dispatcher() { +pub fn reset_dispatcher() { // We don't care about shutdown errors, since they will // definitely happen if this is run concurrently. // We will still replace the global dispatcher. diff --git a/third_party/rust/glean-core/src/dispatcher/mod.rs b/third_party/rust/glean-core/src/dispatcher/mod.rs @@ -24,6 +24,7 @@ use std::{ mem, + ops::Deref, sync::{ atomic::{AtomicBool, AtomicUsize, Ordering}, Arc, @@ -92,11 +93,23 @@ impl<T> From<SendError<T>> for DispatchError { /// A clonable guard for a dispatch queue. #[derive(Clone)] struct DispatchGuard { + inner: Arc<DispatchGuardInner>, +} + +impl Deref for DispatchGuard { + type Target = DispatchGuardInner; + + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +struct DispatchGuardInner { /// Whether to queue on the preinit buffer or on the unbounded queue - queue_preinit: Arc<AtomicBool>, + queue_preinit: AtomicBool, /// The number of items that were added to the queue after it filled up. - overflow_count: Arc<AtomicUsize>, + overflow_count: AtomicUsize, /// The maximum pre-init queue size max_queue_size: usize, @@ -262,8 +275,8 @@ impl Dispatcher { let (preinit_sender, preinit_receiver) = unbounded(); let (sender, mut unbounded_receiver) = unbounded(); - let queue_preinit = Arc::new(AtomicBool::new(true)); - let overflow_count = Arc::new(AtomicUsize::new(0)); + let queue_preinit = AtomicBool::new(true); + let overflow_count = AtomicUsize::new(0); let worker = crate::thread::spawn("glean.dispatcher", move || { match block_receiver.recv() { @@ -322,14 +335,15 @@ impl Dispatcher { }) .expect("Failed to spawn Glean's dispatcher thread"); - let guard = DispatchGuard { + let inner = Arc::new(DispatchGuardInner { queue_preinit, overflow_count, max_queue_size, block_sender, preinit_sender, sender, - }; + }); + let guard = DispatchGuard { inner }; Dispatcher { guard, diff --git a/third_party/rust/glean-core/src/internal_metrics.rs b/third_party/rust/glean-core/src/internal_metrics.rs @@ -335,9 +335,6 @@ pub struct DatabaseMetrics { /// The time it takes for a write-commit for the Glean database. pub write_time: TimingDistributionMetric, - - /// The database size at specific phases of initialization. - pub load_sizes: ObjectMetric, } impl DatabaseMetrics { @@ -375,15 +372,6 @@ impl DatabaseMetrics { }, TimeUnit::Microsecond, ), - - load_sizes: ObjectMetric::new(CommonMetricData { - name: "load_sizes".into(), - category: "glean.database".into(), - send_in_pings: vec!["health".into()], - lifetime: Lifetime::Ping, - disabled: false, - dynamic_label: None, - }), } } } @@ -479,6 +467,7 @@ impl HealthMetrics { Cow::from("permission-denied"), Cow::from("io"), Cow::from("c0ffee-in-file"), + Cow::from("file-not-found"), ]), ), file_write_error: LabeledMetric::<CounterMetric>::new( @@ -539,28 +528,3 @@ pub struct DataDirectoryInfoObjectItemItemFilesItem { #[serde(skip_serializing_if = "Option::is_none")] pub error_message: Option<String>, } - -#[derive(Debug, Default, Serialize)] -#[serde(deny_unknown_fields)] -pub struct LoadSizesObject { - #[serde(skip_serializing_if = "Option::is_none")] - pub new: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub open: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub post_open: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub post_open_user: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub post_load_ping_lifetime_data: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub user_records: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub ping_records: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub application_records: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub ping_memory_records: Option<i64>, - #[serde(skip_serializing_if = "Option::is_none")] - pub error: Option<String>, -} diff --git a/third_party/rust/glean-core/src/internal_pings.rs b/third_party/rust/glean-core/src/internal_pings.rs @@ -82,7 +82,7 @@ impl InternalPings { true, enabled, vec![], - vec!["pre_init".to_string(), "post_init".to_string()], + vec!["pre_init".to_string()], true, vec![], ), diff --git a/third_party/rust/glean-core/src/lib.rs b/third_party/rust/glean-core/src/lib.rs @@ -38,6 +38,10 @@ mod core_metrics; mod coverage; mod database; mod debug; +#[cfg(feature = "benchmark")] +#[doc(hidden)] +pub mod dispatcher; +#[cfg(not(feature = "benchmark"))] mod dispatcher; mod error; mod error_recording; @@ -584,10 +588,6 @@ fn initialize_inner( // a health ping with reason "pre_init". record_dir_info_and_submit_health_ping(dir_info, "pre_init"); - // Now capture a post_init snapshot of the state of Glean's data directories after initialization to send - // in a health ping with reason "post_init". - record_dir_info_and_submit_health_ping(collect_directory_info(data_path), "post_init"); - let state = global_state().lock().unwrap(); if let Err(e) = state.callbacks.trigger_upload() { log::error!("Triggering upload failed. Error: {}", e); diff --git a/third_party/rust/glean-core/src/metrics/ping.rs b/third_party/rust/glean-core/src/metrics/ping.rs @@ -333,8 +333,13 @@ impl PingType { false } Some(ping) => { - const BUILTIN_PINGS: [&str; 4] = - ["baseline", "metrics", "events", "deletion-request"]; + const BUILTIN_PINGS: [&str; 5] = [ + "baseline", + "metrics", + "events", + "health", + "deletion-request", + ]; // This metric is recorded *after* the ping is collected (since // that is the only way to know *if* it will be submitted). The diff --git a/third_party/rust/glean-core/tests/clientid_textfile.rs b/third_party/rust/glean-core/tests/clientid_textfile.rs @@ -71,9 +71,8 @@ fn reused_clientid_from_file() { write_clientid_to_file(temp.path(), &new_uuid).unwrap(); let (glean, temp) = new_glean(Some(temp)); - // TODO(bug 1996862): We don't run the mitigation yet - //let db_client_id = clientid_metric().get_value(&glean, None).unwrap(); - //assert_eq!(new_uuid, db_client_id); + let db_client_id = clientid_metric().get_value(&glean, None).unwrap(); + assert_eq!(new_uuid, db_client_id); glean.submit_ping_by_name("health", Some("pre_init")); let mut pending = get_queued_pings(temp.path()).unwrap(); @@ -141,10 +140,8 @@ fn clientid_regen_issue_with_existing_db() { let (glean, temp) = new_glean(Some(temp)); - // TODO(bug 1996862): We don't run the mitigation yet - _ = file_client_id; - //let db_client_id = clientid_metric().get_value(&glean, None).unwrap(); - //assert_eq!(file_client_id, db_client_id); + let db_client_id = clientid_metric().get_value(&glean, None).unwrap(); + assert_eq!(file_client_id, db_client_id); glean.submit_ping_by_name("health", Some("pre_init")); let mut pending = get_queued_pings(temp.path()).unwrap(); @@ -225,10 +222,8 @@ fn c0ffee_in_db_gets_overwritten_by_stored_client_id() { let (glean, temp) = new_glean(Some(temp)); - // TODO(bug 1996862): We don't run the mitigation yet - _ = file_client_id; - //let db_client_id = clientid_metric().get_value(&glean, None).unwrap(); - //assert_eq!(file_client_id, db_client_id); + let db_client_id = clientid_metric().get_value(&glean, None).unwrap(); + assert_eq!(file_client_id, db_client_id); glean.submit_ping_by_name("health", Some("pre_init")); let mut pending = get_queued_pings(temp.path()).unwrap(); @@ -244,10 +239,9 @@ fn c0ffee_in_db_gets_overwritten_by_stored_client_id() { let exception_uuid = &payload["metrics"]["uuid"]["glean.health.recovered_client_id"].as_str(); assert_eq!(&Some(file_client_id), exception_uuid); - // TODO(bug 1996862): We don't run the mitigation yet - //let exception_uuid = &payload["client_info"]["client_id"].as_str(); - //assert_eq!(&Some(file_client_id), exception_uuid); - // instead we ensure we don't see the c0ffee ID either. + let exception_uuid = &payload["client_info"]["client_id"].as_str(); + assert_eq!(&Some(file_client_id), exception_uuid); + // We ensure we don't see the c0ffee ID either. let client_id = payload["client_info"]["client_id"].as_str().unwrap(); assert_ne!("c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0", client_id); } @@ -333,6 +327,64 @@ fn invalid_client_id_file_doesnt_crash() { drop(temp); } +#[test] +fn single_deletion_request_ping_after_externally_disabling() { + let (client_id, temp) = { + let (glean, temp) = new_glean(None); + let client_id = clientid_metric().get_value(&glean, None).unwrap(); + + drop(glean); + (client_id, temp) + }; + + let (_glean, temp) = new_glean_with_upload(Some(temp), false); + + let mut pings = get_deletion_pings(temp.path()).unwrap(); + + // We should have only 1 deletion-request ping pending! + assert_eq!(1, pings.len()); + + let payload = pings.pop().unwrap().1; + let uuid = &payload["client_info"]["client_id"].as_str(); + assert_eq!(&Some(&*client_id.to_string()), uuid); +} + +#[test] +fn extra_deletion_request_ping_is_sent() { + let (client_id, temp) = { + let (mut glean, temp) = new_glean(None); + let client_id = clientid_metric().get_value(&glean, None).unwrap(); + + // Turning off upload removes the `client_id.txt` and deletes the database. + // This also triggers a deletion-request ping + glean.set_upload_enabled(false); + + let pings = get_deletion_pings(temp.path()).unwrap(); + assert_eq!(1, pings.len()); + + (client_id, temp) + }; + + // We restore the `client_id.txt` file as if previous removal failed. + write_clientid_to_file(temp.path(), &client_id).unwrap(); + + let (_glean, temp) = new_glean_with_upload(Some(temp), false); + + let mut pings = get_deletion_pings(temp.path()).unwrap(); + + // We now have 2 deletion-request pings pending! + assert_eq!(2, pings.len()); + + // Test both pings. They should be equivalent! + let payload = pings.pop().unwrap().1; + let uuid = &payload["client_info"]["client_id"].as_str(); + assert_eq!(&Some(&*client_id.to_string()), uuid); + + let payload = pings.pop().unwrap().1; + let uuid = &payload["client_info"]["client_id"].as_str(); + assert_eq!(&Some(&*client_id.to_string()), uuid); +} + mod read_errors { use super::*; @@ -441,6 +493,25 @@ mod read_errors { .unwrap(); assert_eq!(1, state); } + + #[test] + fn file_not_found_is_reported() { + let (glean, temp) = new_glean(None); + + glean.submit_ping_by_name("health", Some("pre_init")); + let mut pending = get_queued_pings(temp.path()).unwrap(); + assert_eq!(1, pending.len()); + let payload = pending.pop().unwrap().1; + + let state = &payload["metrics"]["string"]["glean.health.exception_state"]; + assert_eq!(&serde_json::Value::Null, state); + + let state = payload["metrics"]["labeled_counter"]["glean.health.file_read_error"] + ["file-not-found"] + .as_i64() + .unwrap(); + assert_eq!(1, state); + } } mod write_errors { diff --git a/third_party/rust/glean-core/tests/common/mod.rs b/third_party/rust/glean-core/tests/common/mod.rs @@ -42,9 +42,13 @@ pub fn tempdir() -> (tempfile::TempDir, String) { pub const GLOBAL_APPLICATION_ID: &str = "org.mozilla.glean.test.app"; -// Creates a new instance of Glean with a temporary directory. -// We need to keep the `TempDir` alive, so that it's not deleted before we stop using it. -pub fn new_glean(tempdir: Option<tempfile::TempDir>) -> (Glean, tempfile::TempDir) { +/// Creates a new instance of Glean with a temporary directory, with `upload_enabled` specified. +/// +/// We need to keep the `TempDir` alive, so that it's not deleted before we stop using it. +pub fn new_glean_with_upload( + tempdir: Option<tempfile::TempDir>, + upload_enabled: bool, +) -> (Glean, tempfile::TempDir) { let dir = match tempdir { Some(tempdir) => tempdir, None => tempfile::tempdir().unwrap(), @@ -54,7 +58,7 @@ pub fn new_glean(tempdir: Option<tempfile::TempDir>) -> (Glean, tempfile::TempDi data_path: dir.path().display().to_string(), application_id: GLOBAL_APPLICATION_ID.into(), language_binding_name: "Rust".into(), - upload_enabled: true, + upload_enabled, max_events: None, delay_ping_lifetime_io: false, app_build: "Unknown".into(), @@ -78,6 +82,13 @@ pub fn new_glean(tempdir: Option<tempfile::TempDir>) -> (Glean, tempfile::TempDi (glean, dir) } +/// Creates a new instance of Glean with a temporary directory. +/// +/// We need to keep the `TempDir` alive, so that it's not deleted before we stop using it. +pub fn new_glean(tempdir: Option<tempfile::TempDir>) -> (Glean, tempfile::TempDir) { + new_glean_with_upload(tempdir, true) +} + pub fn new_test_ping(glean: &mut Glean, name: &str) -> PingType { let ping = PingBuilder::new(name).build(); glean.register_ping_type(&ping); diff --git a/third_party/rust/glean/.cargo-checksum.json b/third_party/rust/glean/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.lock":"e0bd955629e81803b816b935671e8b35d3a98cf01169998f54b5290856926865","Cargo.toml":"bbafb971082c9c55d4d947091a2d46dc2ed0eacf97c5202f86a19ba033338ef8","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"5627cc81e6187ab6c2b4dff061af16d559edcab64ba786bac39daa69c703c595","src/common_test.rs":"c86cccfb7da1506cfed29cb2ee13d839b7ac7cffdfd70793c9665bb44e0b684f","src/configuration.rs":"de65ab99a26b4547be20803bc195cb50a6ab40b1a3f49a2e6230fed5a9d7a8d8","src/core_metrics.rs":"fef8fb4e5fa57c179836c6eb2cf59278fe3b8b036dbe57b0ff02971b4acd822f","src/lib.rs":"73179ef356374879fd8ffbe9268f74a81a06de8fa3ba73dfe158b43be2fab249","src/net/http_uploader.rs":"0a94ac3cd87cb021529dee46d537765ab8d923e0f4ac7615225e878d3739e6dc","src/net/mod.rs":"9999cfcee8b3bf282ff753acb661893ae4c306c2cafd76029d630211b034e71e","src/private/event.rs":"e6c76b384771b6ca5e0bc77f0e563ff768798be0985b1b7858e5921af497d197","src/private/mod.rs":"de67f272a20b9b5ead58a40073a82ba54f9dd1b7d0d14c7b916fc714c961ead4","src/private/object.rs":"4dde92c7700d68fb7113ae57ef84c0ec14f5c786a2f0758ae700f458891613be","src/private/ping.rs":"8ec514e88c1fcba13560522c83e39643edf7d74a3dc733e273984c46c781b2d2","src/system.rs":"d602804a72258bfd65e51c571946631732ee27d81342d8aa406e47fdd241bbfa","src/test.rs":"ffc54a3cab5950148cee0750b11de883f1346bce1d9b7755143e3d5ba78f7533","tests/collection_enabled.rs":"3327a949dbdeec493d661261abda68ffa71acc50ab24cba4fde5302749e6f16b","tests/collection_enabled_bin.rs":"d3a6458b84012a447e5cb792f2292a06951ed252fad803b9166b437bacba542c","tests/common/mod.rs":"2fd391c5eb45f56fdfa3261dd631406c67ed36b10b0d5432febe2483da5c9d89","tests/custom_distribution_buffered.rs":"aa70bc2e2aca14c5c8a30dafd246d2657769fa7cdf4d09a6f10a03a356c696f6","tests/dual_labeled_counter_metric.rs":"91e9e206a4f331e067f55e5cde7eb0b893e41ea08eb125371e7b03fe44cb1445","tests/health_ping.rs":"d3da67d6b5b484b6f7985a5f4f26fffe1edab741001cfaf3406009fa41147a51","tests/health_ping_file_overwrite.rs":"f6997dce57475777694594d8c19f5931888de6dec9a616df625bf88a012df64e","tests/init_fails.rs":"ca7fa1b3dd6a21a9e005b7a4f0a18664c4bceb952dd463db8316500f72280d5b","tests/interruptible_shutdown.rs":"60f057bd495843a6d97cc9f875be1aa944b43c5f9a034c58d648b2d629195989","tests/labeled_metrics.rs":"d9b14025054a0ee9b89b60e720435828257eda7ec61f349389ab387923d3954c","tests/memory_distribution_buffered.rs":"e809a8de47ea4ac10c1181651d48b11aa11f57704d95f10ae194762e5d3d2982","tests/metric_metadata.rs":"e0188fcf8dc8f754f905a0662932d341646429589795bf10407645c0b3034ad2","tests/near-empty-c0ffee-db.safe.bin":"89afb3bb8fc94430fb0ed0fe55f85f3f8bcc8fd0fed69a9df13cc560294ec9f5","tests/never_init.rs":"51fff5618f6603bc0945d70131698d10a1c6275f43bbc22a2de5807f8a79229f","tests/no_time_to_init.rs":"2ede23df6618ff1cb5ae3b7bbf95900ad0fd92072afa2e0319bf147b4f75cefc","tests/overflowing_preinit.rs":"dc4d5eccb84c3c9ca25221bdc4a9bbf50ebc36d6d83d27f36d93f4562fb75d5d","tests/persist_ping_lifetime_nopanic.rs":"18379d3ffbf4a2c8c684c04ff7a0660b86dfbbb447db2d24dfed6073cb7ddf8f","tests/schema.rs":"23b49005402b914e55a0c5c155f30c2662c609f79be78d1385ec25b3600b3547","tests/signaling_done.rs":"a0c956aaf18e96912896df624e14a652c4276fc09da75d2e29a5f8c8ae99226e","tests/simple.rs":"79d78a4cdc439c92b4efbbb2aa181ec1fd232c7a6264ad7832ab2a574ea74939","tests/test-delayed-ping-data.sh":"b6a86e07e47c301529e3bcca5265eba091c6626e38a495ad05f94f1654e6450e","tests/test-enabled-pings.sh":"f094f5735c1bb66da854de0eae84098527fff9b59854888da6f2865308847383","tests/test-mps-delay.sh":"207661a72bf8c05a8b44ad40f208826338069e2f7f4dc3f589aabc35606732e8","tests/test-pending-gets-removed.sh":"7099aaf770cfae070ee4427557cb33981734e18fe145890917d5e8ca324ea011","tests/test-ping-lifetime-flush.sh":"ed7dfc57ce71677e6b310286aed563ab4baa69aad9554cbd045fe5e49903b63a","tests/test-shutdown-blocking.sh":"77402ba408ffb69c19da01d9bffc8a1be8c735efdb84575512f778a07e8e77d1","tests/test-thread-crashing.sh":"a76e07848a21bcf0e52612f56bc785297f3a8dec7c412c2b21c7485735140fda","tests/timing_distribution_buffered.rs":"b96cd123ff830175597d32667477eac9102e05aea6726382c83b35b6bc66176c","tests/timing_distribution_single_sample.rs":"bca54132d5fec225788f0292e8b6c11fa658405dc0586a2bbd84b86c1558f4bd","tests/upload_timing.rs":"e7271e7a71fc5df98c9695a01f89039f4011849c709c8dc99af23bb7e047f3e1","tests/uploader_capabilities.rs":"0c2d70ed51fba444a94aef522e7cb9253c939551694babe0045b2358e3e85b34"},"package":"16967309c8c9320aa752fbb700db55b543983845ad5309cb981c0df9650a530f"} -\ No newline at end of file +{"files":{"Cargo.lock":"474806c065d2e5c85a9afb652abbb0c438377df638bfa8de694593aaf2f465e5","Cargo.toml":"d7daebf53ff153fd1c802aa74d68a3cdba6c5fa24430acdd68287c7670e2047b","LICENSE":"1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5","README.md":"5627cc81e6187ab6c2b4dff061af16d559edcab64ba786bac39daa69c703c595","src/common_test.rs":"c86cccfb7da1506cfed29cb2ee13d839b7ac7cffdfd70793c9665bb44e0b684f","src/configuration.rs":"de65ab99a26b4547be20803bc195cb50a6ab40b1a3f49a2e6230fed5a9d7a8d8","src/core_metrics.rs":"fef8fb4e5fa57c179836c6eb2cf59278fe3b8b036dbe57b0ff02971b4acd822f","src/lib.rs":"73179ef356374879fd8ffbe9268f74a81a06de8fa3ba73dfe158b43be2fab249","src/net/http_uploader.rs":"0a94ac3cd87cb021529dee46d537765ab8d923e0f4ac7615225e878d3739e6dc","src/net/mod.rs":"9999cfcee8b3bf282ff753acb661893ae4c306c2cafd76029d630211b034e71e","src/private/event.rs":"e6c76b384771b6ca5e0bc77f0e563ff768798be0985b1b7858e5921af497d197","src/private/mod.rs":"de67f272a20b9b5ead58a40073a82ba54f9dd1b7d0d14c7b916fc714c961ead4","src/private/object.rs":"4dde92c7700d68fb7113ae57ef84c0ec14f5c786a2f0758ae700f458891613be","src/private/ping.rs":"8ec514e88c1fcba13560522c83e39643edf7d74a3dc733e273984c46c781b2d2","src/system.rs":"d602804a72258bfd65e51c571946631732ee27d81342d8aa406e47fdd241bbfa","src/test.rs":"ffc54a3cab5950148cee0750b11de883f1346bce1d9b7755143e3d5ba78f7533","tests/collection_enabled.rs":"3327a949dbdeec493d661261abda68ffa71acc50ab24cba4fde5302749e6f16b","tests/collection_enabled_bin.rs":"d3a6458b84012a447e5cb792f2292a06951ed252fad803b9166b437bacba542c","tests/common/mod.rs":"2fd391c5eb45f56fdfa3261dd631406c67ed36b10b0d5432febe2483da5c9d89","tests/custom_distribution_buffered.rs":"aa70bc2e2aca14c5c8a30dafd246d2657769fa7cdf4d09a6f10a03a356c696f6","tests/dual_labeled_counter_metric.rs":"91e9e206a4f331e067f55e5cde7eb0b893e41ea08eb125371e7b03fe44cb1445","tests/health_ping.rs":"88690ffc4946e41c1b518cfeff2768a6c0dc702672f79d44ad6ade64042c76ae","tests/health_ping_file_overwrite.rs":"ae95d1dab9339af0483599e8d4c3e3ce4d0caec28ff7097909803c770079e0aa","tests/init_fails.rs":"ca7fa1b3dd6a21a9e005b7a4f0a18664c4bceb952dd463db8316500f72280d5b","tests/interruptible_shutdown.rs":"60f057bd495843a6d97cc9f875be1aa944b43c5f9a034c58d648b2d629195989","tests/labeled_metrics.rs":"d9b14025054a0ee9b89b60e720435828257eda7ec61f349389ab387923d3954c","tests/memory_distribution_buffered.rs":"e809a8de47ea4ac10c1181651d48b11aa11f57704d95f10ae194762e5d3d2982","tests/metric_metadata.rs":"e0188fcf8dc8f754f905a0662932d341646429589795bf10407645c0b3034ad2","tests/near-empty-c0ffee-db.safe.bin":"89afb3bb8fc94430fb0ed0fe55f85f3f8bcc8fd0fed69a9df13cc560294ec9f5","tests/never_init.rs":"51fff5618f6603bc0945d70131698d10a1c6275f43bbc22a2de5807f8a79229f","tests/no_time_to_init.rs":"2ede23df6618ff1cb5ae3b7bbf95900ad0fd92072afa2e0319bf147b4f75cefc","tests/overflowing_preinit.rs":"dc4d5eccb84c3c9ca25221bdc4a9bbf50ebc36d6d83d27f36d93f4562fb75d5d","tests/persist_ping_lifetime_nopanic.rs":"18379d3ffbf4a2c8c684c04ff7a0660b86dfbbb447db2d24dfed6073cb7ddf8f","tests/schema.rs":"23b49005402b914e55a0c5c155f30c2662c609f79be78d1385ec25b3600b3547","tests/signaling_done.rs":"a0c956aaf18e96912896df624e14a652c4276fc09da75d2e29a5f8c8ae99226e","tests/simple.rs":"79d78a4cdc439c92b4efbbb2aa181ec1fd232c7a6264ad7832ab2a574ea74939","tests/test-delayed-ping-data.sh":"b6a86e07e47c301529e3bcca5265eba091c6626e38a495ad05f94f1654e6450e","tests/test-enabled-pings.sh":"f094f5735c1bb66da854de0eae84098527fff9b59854888da6f2865308847383","tests/test-mps-delay.sh":"207661a72bf8c05a8b44ad40f208826338069e2f7f4dc3f589aabc35606732e8","tests/test-pending-gets-removed.sh":"7099aaf770cfae070ee4427557cb33981734e18fe145890917d5e8ca324ea011","tests/test-ping-lifetime-flush.sh":"ed7dfc57ce71677e6b310286aed563ab4baa69aad9554cbd045fe5e49903b63a","tests/test-shutdown-blocking.sh":"d35beb9bda6881bc70b5681239d5b422cd21a295b15288b89685b61c753f46bb","tests/test-thread-crashing.sh":"9573952e17206eeb6312b7318aa72dc8412ea2dda4f5aefdcc4ffd5cfbe47772","tests/timing_distribution_buffered.rs":"b96cd123ff830175597d32667477eac9102e05aea6726382c83b35b6bc66176c","tests/timing_distribution_single_sample.rs":"bca54132d5fec225788f0292e8b6c11fa658405dc0586a2bbd84b86c1558f4bd","tests/upload_timing.rs":"e7271e7a71fc5df98c9695a01f89039f4011849c709c8dc99af23bb7e047f3e1","tests/uploader_capabilities.rs":"0c2d70ed51fba444a94aef522e7cb9253c939551694babe0045b2358e3e85b34"},"package":"3bd66fe38baf2f972ca9fb63015533f05a11c971462a289c923270803da68b91"} +\ No newline at end of file diff --git a/third_party/rust/glean/Cargo.lock b/third_party/rust/glean/Cargo.lock @@ -312,7 +312,7 @@ dependencies = [ [[package]] name = "glean" -version = "66.1.2" +version = "66.2.0" dependencies = [ "crossbeam-channel", "env_logger", @@ -331,9 +331,9 @@ dependencies = [ [[package]] name = "glean-core" -version = "66.1.2" +version = "66.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8d8cb0e35e0bc8472cf75cd3ca4d448f208003ea49a524deb623bdfd7c6c882" +checksum = "416be389bdbac4b784bc226950607acaa9e56888e6fbc91ee2ac9ba5f6bbee1c" dependencies = [ "android_logger", "bincode", @@ -1137,9 +1137,9 @@ dependencies = [ [[package]] name = "whatsys" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb632c0076024630111a08ca9fcbd34736c80d10b9ae517077487b0c82f46a36" +checksum = "192bcd2925a9791ba474bc673938f8c59b8978b3f304ef2c50672156bacf943b" dependencies = [ "cc", "cfg-if", diff --git a/third_party/rust/glean/Cargo.toml b/third_party/rust/glean/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.82" name = "glean" -version = "66.1.2" +version = "66.2.0" authors = [ "Jan-Erik Rediger <jrediger@mozilla.com>", "The Glean Team <glean-team@mozilla.com>", @@ -135,7 +135,7 @@ path = "tests/uploader_capabilities.rs" version = "0.5" [dependencies.glean-core] -version = "66.1.2" +version = "66.2.0" [dependencies.inherent] version = "1" diff --git a/third_party/rust/glean/tests/health_ping.rs b/third_party/rust/glean/tests/health_ping.rs @@ -68,7 +68,7 @@ fn get_pings(pings_dir: &Path) -> Vec<(String, JsonValue, Option<JsonValue>)> { /// Some data is recorded (before and after initialization). /// And later the whole process is shutdown. #[test] -fn test_pre_post_init_health_pings_exist() { +fn test_pre_init_health_pings_exist() { common::enable_test_logging(); // Create a custom configuration to use a validating uploader. @@ -85,65 +85,24 @@ fn test_pre_post_init_health_pings_exist() { // Check for the initialization pings. let pings = get_pings(&tmpname.join("pending_pings")); - pings.iter().for_each(|(url, _, _)| { - println!("Ping URL: {}", url); - }); - assert!(!pings.is_empty()); - assert_eq!( - 2, - pings - .iter() - .filter(|(url, _, _)| url.contains("health")) - .count() - ); - let preinits: Vec<_> = pings - .iter() - .filter(|(url, body, _)| { - url.contains("health") && body["ping_info"]["reason"] == "pre_init" - }) - .collect(); - assert_eq!(1, preinits.len()); - let health_pings: Vec<_> = pings .iter() - .filter(|(url, _, _)| url.contains("health")) + .filter(|(url, _body, _)| url.contains("health")) .collect(); - assert_eq!( - 1, - health_pings - .iter() - .filter(|(_, body, _)| body["ping_info"]["reason"] == "post_init") - .count() - ); + assert_eq!(1, health_pings.len()); + + let preinit = &health_pings[0]; // Ensure both "health" pings have the same init count. assert_eq!( - 2, - health_pings - .iter() - .filter(|(_, body, _)| body["metrics"]["counter"]["glean.health.init_count"] == 1) - .count() + 1, + preinit.1["metrics"]["counter"]["glean.health.init_count"] ); - let exception_state = &preinits[0].1["metrics"]["string"]["glean.health_exception_state"]; + let exception_state = &preinit.1["metrics"]["string"]["glean.health_exception_state"]; assert_eq!(&JsonValue::Null, exception_state); - let exception_uuid = &preinits[0].1["metrics"]["uuid"]["glean.health_recovered_client_id"]; + let exception_uuid = &preinit.1["metrics"]["uuid"]["glean.health_recovered_client_id"]; assert_eq!(&JsonValue::Null, exception_uuid); - // An initial preinit "health" ping will show no db file sizes - let load_sizes = preinits[0].1["metrics"]["object"]["glean.database.load_sizes"] - .as_object() - .unwrap(); - assert_eq!(None, load_sizes.get("new")); - assert_eq!(None, load_sizes.get("open")); - assert_eq!(None, load_sizes.get("post_open")); - assert_eq!(None, load_sizes.get("post_open_user")); - assert_eq!(None, load_sizes.get("post_load_ping_lifetime_data")); - assert_eq!(0, load_sizes["user_records"]); - assert_eq!(0, load_sizes["ping_records"]); - assert_eq!(0, load_sizes["application_records"]); - assert_eq!(None, load_sizes.get("ping_memory_records")); - assert_eq!(None, load_sizes.get("error")); - let cfg = ConfigurationBuilder::new(true, tmpname.clone(), "health-ping-test") .with_server_endpoint("invalid-test-host") .with_uploader(FakeUploader) @@ -155,31 +114,9 @@ fn test_pre_post_init_health_pings_exist() { let pings = get_pings(&tmpname.join("pending_pings")); let second_preinit: Vec<_> = pings .iter() - .filter(|(url, body, _)| { - url.contains("health") - && body["ping_info"]["reason"] == "pre_init" - && body["ping_info"]["seq"] == 2 - }) + .filter(|(url, body, _)| url.contains("health") && body["ping_info"]["seq"] == 1) .collect(); // We should have a second "pre_init"-reason "health" ping now. assert_eq!(1, second_preinit.len()); - - let load_sizes = second_preinit[0].1["metrics"]["object"]["glean.database.load_sizes"] - .as_object() - .unwrap(); - assert_ne!(0, load_sizes["new"]); - assert_ne!(0, load_sizes["open"]); - assert_ne!(0, load_sizes["post_open"]); - assert_ne!(0, load_sizes["post_open_user"].as_i64().unwrap()); - assert_ne!(0, load_sizes["post_load_ping_lifetime_data"]); - assert_eq!( - load_sizes["new"], - load_sizes["post_load_ping_lifetime_data"] - ); - assert!(0 < load_sizes["user_records"].as_i64().unwrap()); - assert!(0 < load_sizes["ping_records"].as_i64().unwrap()); - assert!(0 < load_sizes["application_records"].as_i64().unwrap()); - assert_eq!(None, load_sizes.get("ping_memory_records")); - assert_eq!(None, load_sizes.get("error")); } diff --git a/third_party/rust/glean/tests/health_ping_file_overwrite.rs b/third_party/rust/glean/tests/health_ping_file_overwrite.rs @@ -47,7 +47,7 @@ impl net::PingUploader for ReportingUploader { /// Test scenario: Write a client ID to the backup file and check that it's used after initialization. #[test] -fn test_pre_post_init_health_pings_exist() { +fn test_pre_init_health_ping_exist() { common::enable_test_logging(); // Create a custom configuration to use a validating uploader. @@ -79,7 +79,6 @@ fn test_pre_post_init_health_pings_exist() { let exception_uuid = &payload["metrics"]["uuid"]["glean.health_recovered_client_id"]; assert_eq!(&JsonValue::Null, exception_uuid); - // TODO(bug 1996862): We don't run the mitigation yet. - //let ping_client_id = &payload["client_info"]["client_id"]; - //assert_eq!(client_id, ping_client_id); + let ping_client_id = &payload["client_info"]["client_id"]; + assert_eq!(client_id, ping_client_id); } diff --git a/third_party/rust/glean/tests/test-shutdown-blocking.sh b/third_party/rust/glean/tests/test-shutdown-blocking.sh @@ -20,7 +20,7 @@ datapath=$(mktemp -d "${tmp}/glean_long_running.XXXX") cargo run -p glean --example long-running -- "$datapath" count=$(ls -1q "$datapath/pending_pings" | wc -l) -if [[ "$count" -eq 2 ]]; then # Only one ping, the "health" ping is expected but it is sent twice +if [[ "$count" -eq 1 ]]; then # Only one `health` ping echo "test result: ok." exit 0 else diff --git a/third_party/rust/glean/tests/test-thread-crashing.sh b/third_party/rust/glean/tests/test-thread-crashing.sh @@ -23,8 +23,8 @@ cargo run -p glean --example crashing-threads -- "$datapath" ret=$? count=$(ls -1q "$datapath/pending_pings" | wc -l) -# 2x "health", 1x "prototype" -expect_count=3 +# 1x "health", 1x "prototype" +expect_count=2 # We expect 1 `prototype` ping: if [[ $ret -eq 0 ]] && [[ "$count" -eq $expect_count ]]; then