2 changed files with 89 additions and 11 deletions
@ -0,0 +1,89 @@
@@ -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…
Reference in new issue