mirror of
https://github.com/livekit/livekit.git
synced 2026-05-24 23:26:11 +00:00
1e1aaeb86b
* Separate from ion-sfu changes: 1. extract pkg/buffer, twcc, sfu, relay, stats, logger 2. to solve cycle import, move ion-sfu/pkg/logger to pkg/sfu/logger 3. replace pion/ion-sfu => ./ reason: will change import pion/ion-sfu/pkg/* to livekit-server/pkg/* after this pr merged. Just not change any code in this pr, because it will confused with the separate code from ion-sfu in review. * Move code from ion-sfu to pkg/sfu * fix build error for resovle conflict Co-authored-by: cnderrauber <zengjie9004@gmail.com>
46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package sfu
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStreamTracker(t *testing.T) {
|
|
t.Run("flips to inactive immediately", func(t *testing.T) {
|
|
callbackCalled := atomicBool(0)
|
|
tracker := NewStreamTracker()
|
|
tracker.OnStatusChanged = func(status StreamStatus) {
|
|
callbackCalled.set(true)
|
|
}
|
|
require.Equal(t, StreamStatusActive, tracker.Status())
|
|
|
|
// run a single interation
|
|
tracker.detectChanges()
|
|
require.Equal(t, StreamStatusStopped, tracker.Status())
|
|
require.True(t, callbackCalled.get())
|
|
})
|
|
|
|
t.Run("flips back to active after iterations", func(t *testing.T) {
|
|
tracker := NewStreamTracker()
|
|
tracker.CyclesRequired = 2
|
|
tracker.SamplesRequired = 1
|
|
tracker.setStatus(StreamStatusStopped)
|
|
|
|
tracker.Observe(1)
|
|
tracker.detectChanges()
|
|
require.Equal(t, StreamStatusStopped, tracker.Status())
|
|
|
|
tracker.Observe(2)
|
|
tracker.detectChanges()
|
|
require.Equal(t, StreamStatusActive, tracker.Status())
|
|
})
|
|
|
|
t.Run("does not change to inactive when paused", func(t *testing.T) {
|
|
tracker := NewStreamTracker()
|
|
tracker.SetPaused(true)
|
|
tracker.detectChanges()
|
|
require.Equal(t, StreamStatusActive, tracker.Status())
|
|
})
|
|
}
|