mirror of
https://github.com/getnora-io/nora.git
synced 2026-04-12 06:50:31 +00:00
fix: add Go and Raw registries to metrics detection and health endpoint (#97)
detect_registry() in metrics.rs was missing branches for /go/ and /raw/
paths, causing all requests to those registries to be labeled "other" in
Prometheus metrics. dashboard_metrics.rs already lists all seven
registries, so this was an oversight.
Also adds go and raw fields to RegistriesHealth so the /health endpoint
reports all seven registries consistently.
Fixes the test_detect_registry_go_path test which previously asserted
the wrong behavior ("other" instead of "go"), and adds tests for raw
path detection and prefix collision safety.
// ticktockbent
Co-authored-by: DevITWay | Pavel Volkov <devitway@gmail.com>
This commit is contained in:
@@ -1,4 +1,10 @@
|
||||
# Changelog
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
- Go and Raw registries missing from Prometheus metrics (`detect_registry` labeled both as "other")
|
||||
- Go and Raw registries missing from `/health` endpoint `registries` object
|
||||
|
||||
## [0.4.0] - 2026-04-05
|
||||
|
||||
### Added
|
||||
|
||||
@@ -31,6 +31,8 @@ pub struct RegistriesHealth {
|
||||
pub npm: String,
|
||||
pub cargo: String,
|
||||
pub pypi: String,
|
||||
pub go: String,
|
||||
pub raw: String,
|
||||
}
|
||||
|
||||
pub fn routes() -> Router<Arc<AppState>> {
|
||||
@@ -70,6 +72,8 @@ async fn health_check(State(state): State<Arc<AppState>>) -> (StatusCode, Json<H
|
||||
npm: "ok".to_string(),
|
||||
cargo: "ok".to_string(),
|
||||
pypi: "ok".to_string(),
|
||||
go: "ok".to_string(),
|
||||
raw: "ok".to_string(),
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -121,6 +121,10 @@ fn detect_registry(path: &str) -> String {
|
||||
"cargo".to_string()
|
||||
} else if path.starts_with("/simple") || path.starts_with("/packages") {
|
||||
"pypi".to_string()
|
||||
} else if path.starts_with("/go/") {
|
||||
"go".to_string()
|
||||
} else if path.starts_with("/raw/") {
|
||||
"raw".to_string()
|
||||
} else if path.starts_with("/ui") {
|
||||
"ui".to_string()
|
||||
} else {
|
||||
@@ -205,8 +209,19 @@ mod tests {
|
||||
fn test_detect_registry_go_path() {
|
||||
assert_eq!(
|
||||
detect_registry("/go/github.com/user/repo/@v/v1.0.0.info"),
|
||||
"other"
|
||||
"go"
|
||||
);
|
||||
assert_eq!(detect_registry("/go/github.com/user/repo/@latest"), "go");
|
||||
// Bare prefix without trailing slash should not match
|
||||
assert_eq!(detect_registry("/goblin/something"), "other");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_detect_registry_raw_path() {
|
||||
assert_eq!(detect_registry("/raw/my-project/artifact.tar.gz"), "raw");
|
||||
assert_eq!(detect_registry("/raw/data/file.bin"), "raw");
|
||||
// Bare prefix without trailing slash should not match
|
||||
assert_eq!(detect_registry("/rawdata/file"), "other");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user