Add config validation and dashboard
Add YAML config loading with validation, env overrides for secrets, and a web dashboard exposing health, stats, and recent events.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
module main
|
||||
|
||||
import sources
|
||||
|
||||
fn test_dedup_allows_first_event() {
|
||||
mut d := new_dedup(DedupConfig{
|
||||
enabled: true
|
||||
ttl_seconds: 300
|
||||
rate_limit: RateLimitConfig{
|
||||
max_per_minute: 10
|
||||
max_per_source: 30
|
||||
}
|
||||
})
|
||||
event := sources.Event{
|
||||
source: 'generic'
|
||||
name: 'test'
|
||||
topic: 'test'
|
||||
message: 'hello'
|
||||
}
|
||||
assert d.allow(event) == true
|
||||
}
|
||||
|
||||
fn test_dedup_blocks_duplicate() {
|
||||
mut d := new_dedup(DedupConfig{
|
||||
enabled: true
|
||||
ttl_seconds: 300
|
||||
rate_limit: RateLimitConfig{
|
||||
max_per_minute: 10
|
||||
max_per_source: 30
|
||||
}
|
||||
})
|
||||
event := sources.Event{
|
||||
source: 'generic'
|
||||
name: 'test'
|
||||
topic: 'test'
|
||||
message: 'hello'
|
||||
}
|
||||
assert d.allow(event) == true
|
||||
assert d.allow(event) == false
|
||||
}
|
||||
|
||||
fn test_dedup_disabled() {
|
||||
mut d := new_dedup(DedupConfig{
|
||||
enabled: false
|
||||
ttl_seconds: 300
|
||||
rate_limit: RateLimitConfig{
|
||||
max_per_minute: 10
|
||||
max_per_source: 30
|
||||
}
|
||||
})
|
||||
event := sources.Event{
|
||||
source: 'generic'
|
||||
name: 'test'
|
||||
topic: 'test'
|
||||
message: 'hello'
|
||||
}
|
||||
assert d.allow(event) == true
|
||||
assert d.allow(event) == true
|
||||
}
|
||||
Reference in New Issue
Block a user