mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-15 19:29:16 +02:00
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>
32 lines
1.2 KiB
Rust
32 lines
1.2 KiB
Rust
//! 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"
|
|
);
|
|
}
|
|
}
|