AtlatestRepositorylive-crafter

live-crafter / tree / teststream-health-test.sgl

1;;; Tests for OBS stream-health state.
2
3(import (sigil core)
4 (sigil dict)
5 (sigil test)
6 (live-crafter config))
7
8(test-group "OBS stream health"
9
10 (test "first nonzero skipped-frame total is historical, not active dropping"
11 (reset-obs-stream-health!)
12 (let ((h (update-obs-stream-health!
13 #{ outputActive: #t
14 outputSkippedFrames: 12
15 outputTotalFrames: 1200
16 outputCongestion: 0.25
17 outputBytes: 750000
18 outputDuration: 3000 })))
19 (assert-true (dict-ref h active?: #f))
20 (assert-false (dict-ref h dropping-now?: #t))
21 (assert-equal 12 (dict-ref h skipped-frames:))
22 (assert-equal 1200 (dict-ref h total-frames:))
23 (assert-equal 2000 (dict-ref h bitrate-kbps:))
24 (assert-equal 0.25 (dict-ref h congestion:))))
26 (test "skipped-frame increase while active marks active dropping"
27 (reset-obs-stream-health!)
28 (update-obs-stream-health! #{ outputActive: #t outputSkippedFrames: 2 })
29 (let ((h (update-obs-stream-health! #{ outputActive: #t outputSkippedFrames: 4 })))
30 (assert-true (dict-ref h dropping-now?: #f))
31 (assert-true (obs-health-dropping-now?))))
33 (test "bitrate uses the most recent OBS status window after first sample"
34 (reset-obs-stream-health!)
35 (update-obs-stream-health!
36 #{ outputActive: #t
37 outputBytes: 100000
38 outputDuration: 1000 })
39 (let ((h (update-obs-stream-health!
40 #{ outputActive: #t
41 outputBytes: 250000
42 outputDuration: 2000 })))
43 (assert-equal 1200 (dict-ref h bitrate-kbps:))))
45 (test "same skipped-frame total clears active dropping"
46 (reset-obs-stream-health!)
47 (update-obs-stream-health! #{ outputActive: #t outputSkippedFrames: 4 })
48 (update-obs-stream-health! #{ outputActive: #t outputSkippedFrames: 5 })
49 (let ((h (update-obs-stream-health! #{ outputActive: #t outputSkippedFrames: 5 })))
50 (assert-false (dict-ref h dropping-now?: #t))))
52 (test "inactive status resets active flag and does not alert on increases"
53 (reset-obs-stream-health!)
54 (update-obs-stream-health! #{ outputActive: #t outputSkippedFrames: 1 })
55 (let ((h (update-obs-stream-health! #{ outputActive: #f outputSkippedFrames: 8 })))
56 (assert-false (dict-ref h active?: #t))
57 (assert-false (dict-ref h dropping-now?: #t)))))