Terminal system monitor in Gleam — htop × btop
1import format
2import gleam/dict
3import gleam/string
4import gleeunit
5import procfs
6
7pub fn main() -> Nil {
8 gleeunit.main()
9}
10
11pub fn human_kb_test() {
12 let assert "512K" = format.human_kb(512)
13 let assert True = string.contains(format.human_kb(2048), "M")
14 let assert True = string.contains(format.human_kb(2_097_152), "G")
15}
16
17pub fn percent_and_meter_test() {
18 let assert True = string.contains(format.percent(12.3), "%")
19 let m = format.meter(50.0, 10)
20 let assert 10 = string.length(m)
21 let s = format.sparkline([0.0, 25.0, 50.0, 75.0, 100.0], 5)
22 let assert 5 = string.length(s)
23}
24
25pub fn band_test() {
26 let assert format.Low = format.band(10.0)
27 let assert format.Mid = format.band(50.0)
28 let assert format.High = format.band(75.0)
29 let assert format.Critical = format.band(95.0)
30}
31
32pub fn ticks_to_time_test() {
33 // 100 ticks = 1.00s at CLK_TCK=100
34 let t = procfs.ticks_to_time(100)
35 let assert True = string.contains(t, "1")
36}
37
38pub fn sample_smoke_test() {
39 let snap0 = procfs.sample_with_core_history(0, 0, dict.new(), dict.new())
40 let assert True = snap0.process_count > 0
41 let assert True = snap0.mem.total_kb > 0
42 let assert True = string.length(snap0.hostname) > 0
43
44 let snap1 =
45 procfs.sample_with_core_history(
46 snap0.prev_cpu_total,
47 snap0.prev_cpu_idle,
48 procfs.core_history_from(snap0),
49 snap0.prev_proc_ticks,
50 )
51 let assert True = snap1.cpu_total_percent >=. 0.0
52 let assert True = snap1.cpu_total_percent <=. 100.0
53}