mirror of
https://github.com/owncast/owncast.git
synced 2024-10-10 19:16:02 +00:00
chore(tests): add first couple replay functionality tests
This commit is contained in:
parent
065e779e99
commit
ea376477b6
@ -84,17 +84,6 @@ func NewRecording(streamID string) *HLSRecorder {
|
||||
return &h
|
||||
}
|
||||
|
||||
// SetOutputConfigurations sets the output configurations for this stream.
|
||||
func (h *HLSRecorder) SetOutputConfigurations(configs []HLSOutputConfiguration) {
|
||||
h.outputConfigurations = configs
|
||||
}
|
||||
|
||||
// StreamBegan is called when a stream is started.
|
||||
func (h *HLSRecorder) StreamBegan(id string) {
|
||||
h.streamID = id
|
||||
h.startTime = time.Now()
|
||||
}
|
||||
|
||||
// SegmentWritten is called when a segment is written to disk.
|
||||
func (h *HLSRecorder) SegmentWritten(path string) {
|
||||
outputConfigurationIndexString := utils.GetIndexFromFilePath(path)
|
||||
|
||||
89
replays/replay_test.go
Normal file
89
replays/replay_test.go
Normal file
@ -0,0 +1,89 @@
|
||||
package replays
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/owncast/owncast/core/data"
|
||||
"github.com/owncast/owncast/db"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/teris-io/shortid"
|
||||
)
|
||||
|
||||
var (
|
||||
fakeStreamId = shortid.MustGenerate()
|
||||
fakeSegmentCount = 300
|
||||
fakeSegmentDuration = 4 // Seconds
|
||||
fakeStreamStartTime = time.Now()
|
||||
fakeConfigId = ""
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
if err := data.SetupPersistence(":memory:"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
Setup()
|
||||
populateFakeStream()
|
||||
m.Run()
|
||||
}
|
||||
|
||||
func populateFakeStream() {
|
||||
queries := data.GetDatastore().GetQueries()
|
||||
|
||||
recording := NewRecording(fakeStreamId)
|
||||
fakeConfigId = recording.outputConfigurations[0].ID
|
||||
|
||||
for i := 0; i < fakeSegmentCount; i++ {
|
||||
fakeSegmentName := fmt.Sprintf("%s-%d.ts", fakeStreamId, i)
|
||||
if err := queries.InsertSegment(context.Background(), db.InsertSegmentParams{
|
||||
ID: shortid.MustGenerate(),
|
||||
StreamID: fakeStreamId,
|
||||
OutputConfigurationID: fakeConfigId,
|
||||
Path: filepath.Join(fakeStreamId, fakeConfigId, "0", fakeSegmentName),
|
||||
RelativeTimestamp: float32(i * fakeSegmentDuration),
|
||||
Timestamp: sql.NullTime{Time: fakeStreamStartTime.Add(time.Duration(fakeSegmentDuration * i)), Valid: true},
|
||||
}); err != nil {
|
||||
log.Errorln(err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := queries.SetStreamEnded(context.Background(), db.SetStreamEndedParams{
|
||||
ID: fakeStreamId,
|
||||
EndTime: sql.NullTime{Time: fakeStreamStartTime.Add(time.Duration(fakeSegmentDuration * fakeSegmentCount)), Valid: true},
|
||||
}); err != nil {
|
||||
log.Errorln(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStream(t *testing.T) {
|
||||
playlist := NewPlaylistGenerator()
|
||||
stream, err := playlist.GetStream(fakeStreamId)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if stream.ID != fakeStreamId {
|
||||
t.Error("expected stream id", fakeStreamId, "got", stream.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlaylist(t *testing.T) {
|
||||
playlist := NewPlaylistGenerator()
|
||||
p, err := playlist.GenerateMediaPlaylistForStreamAndConfiguration(fakeStreamId, fakeConfigId)
|
||||
if p == nil {
|
||||
t.Error("expected playlist")
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if len(p.Segments) != fakeSegmentCount {
|
||||
t.Error("expected", fakeSegmentCount, "segments, got", len(p.Segments))
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user