Files
livekit/pkg/sfu/streamtracker_test.go
T
cnderrauber 1e1aaeb86b Separate from ion-sfu (#171)
* 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>
2021-11-09 12:03:16 +08:00

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())
})
}