///|
fn run_demo() -> Int {
println("moon-distinct-sketch demo")
let hll = @hll.HyperLogLog::new(12)
let mut i = 0
while i < 1000 {
hll.add_string("demo-user-" + i.to_string())
i = i + 1
}
println("hll.distinct=" + hll.cardinality().to_string())
let tenant = @multitenant.TenantMetricsEngine::new(12)
tenant.record("demo", "user-a")
tenant.record("demo", "user-b")
println("tenant.distinct=" + tenant.get_tenant_uv("demo").to_string())
let stream = @stream.StreamAggregator::new(
@stream.StreamConfig::new(60000L, 5000L, 10, 5),
)
let _ = stream.ingest(
@stream.StreamRecord::new(1000L, "demo", "api", "user-a", 1L),
)
let _ = stream.ingest(
@stream.StreamRecord::new(2000L, "demo", "api", "user-b", 2L),
)
match stream.tenant_snapshot("demo") {
Some(snapshot) =>
println(
"stream.distinct=" +
snapshot.distinct.to_string() +
",weight=" +
snapshot.total_weight.to_string(),
)
None => println("stream.distinct=0,weight=0")
}
0
}