mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 07:28:13 +02:00
Lot 4 : mesures système et diagnostics de stockage portés en Rust
Le module sysinfo de loki-rs reprend, à l'identique, ce dont les routes /api/ram, /api/vram et le bandeau de /api/status ont besoin côté Go. La RAM se lit dans /proc/meminfo (MemTotal moins MemAvailable, en Mo) ; hors Linux la façade rend (0, 0) et l'interface masque le bloc. Les jauges GPU interrogent nvidia-smi, bornées à dix secondes, et passent par un cache partagé : deux secondes de validité, une minute quand le binaire est introuvable, et un verrou tenu pendant la requête pour que les onglets simultanés attendent la même lecture au lieu d'en lancer chacun une. La structure GpuStat sérialise name, used, total, util et temp, les noms que handleVram envoie déjà. L'alerte « /data n'est PAS un volume monté » et le conseil fuse.shfs d'Unraid gardent leurs textes, leur règle du montage le plus long et leur cache d'une minute. Les dossiers de modèles venant de la base, le conseil reçoit leur lecture en fermeture asynchrone, appelée seulement quand le cache expire. Les tests Go de sys_storagefuse_test.go et la partie cache de web_vram_test.go sont portés un pour un ; le test hors conteneur, qui touche à l'environnement, vit seul dans tests/sysinfo.rs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2fcafa4ffe
commit
dc6a001581
2 files changed
+846
-1
No files matched your search
@@ -0,0 +1,31 @@
|
||||
//! Port de `TestStorageFuseHintOutsideContainer` (sys_storagefuse_test.go),
|
||||
//! étendu à `dataVolumeWarning` qui suit la même règle. Il modifie
|
||||
//! l'environnement du processus : il vit seul dans ce binaire de test.
|
||||
|
||||
use loki_rs::sysinfo::{data_volume_warning, storage_fuse_hint};
|
||||
|
||||
#[tokio::test]
|
||||
async fn hors_conteneur_aucun_conseil() {
|
||||
let jamais = || async { panic!("dossiers de modèles lus hors conteneur") };
|
||||
// SAFETY : seul test de ce binaire, aucun autre fil ne lit l'environnement.
|
||||
unsafe { std::env::set_var("LOKI_CONTAINER", "") };
|
||||
let s = storage_fuse_hint(jamais).await;
|
||||
assert_eq!(s, "", "hors conteneur, aucun conseil attendu");
|
||||
assert_eq!(
|
||||
data_volume_warning(),
|
||||
"",
|
||||
"hors conteneur, aucune alerte attendue"
|
||||
);
|
||||
if !cfg!(target_os = "linux") {
|
||||
// SAFETY : idem.
|
||||
unsafe { std::env::set_var("LOKI_CONTAINER", "1") };
|
||||
let s = storage_fuse_hint(jamais).await;
|
||||
assert_eq!(s, "", "hors Linux, aucun conseil attendu");
|
||||
// Hors Linux, /proc/self/mountinfo n'existe pas : rien à signaler.
|
||||
assert_eq!(
|
||||
data_volume_warning(),
|
||||
"",
|
||||
"hors Linux, aucune alerte attendue"
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user