AtlatestRepositorylive-crafter
live-crafter / tree / teststream-health-test.sgl
1
;;; Tests for OBS stream-health state.3
(import (sigil core)4
(sigil dict)5
(sigil test)6
(live-crafter config))8
(test-group "OBS stream health"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: #t14
outputSkippedFrames: 1215
outputTotalFrames: 120016
outputCongestion: 0.2517
outputBytes: 75000018
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: #t37
outputBytes: 10000038
outputDuration: 1000 })39
(let ((h (update-obs-stream-health!40
#{ outputActive: #t41
outputBytes: 25000042
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)))))