Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v0.8.3 66 lines 1.5 kB view raw
1package media 2 3import ( 4 "context" 5 "io" 6 "math/rand" 7 "os" 8 "testing" 9 "time" 10 11 "github.com/stretchr/testify/require" 12 "golang.org/x/sync/errgroup" 13 "stream.place/streamplace/pkg/bus" 14) 15 16func TestPacketize(t *testing.T) { 17 withNoGSTLeaks(t, func() { 18 g, _ := errgroup.WithContext(context.Background()) 19 for range streamplaceTestCount { 20 g.Go(func() error { 21 innerTestPacketize(t) 22 return nil 23 }) 24 } 25 err := g.Wait() 26 require.NoError(t, err) 27 }) 28} 29 30func innerTestPacketize(t *testing.T) { 31 filename := getFixture("sample-segment.mp4") 32 inputFile, err := os.Open(filename) 33 require.NoError(t, err) 34 defer inputFile.Close() 35 36 bs, err := io.ReadAll(inputFile) 37 require.NoError(t, err) 38 39 testSeg := &bus.Seg{ 40 Data: bs, 41 Filepath: filename, 42 } 43 44 packet, err := Packetize(context.Background(), testSeg) 45 require.NoError(t, err) 46 require.NotNil(t, packet) 47 require.Equal(t, 49, len(packet.Video)) 48 require.Equal(t, 40, len(packet.Audio)) 49 require.Equal(t, time.Duration(800*time.Millisecond), packet.Duration) 50} 51 52func TestPacketizeInvalid(t *testing.T) { 53 // cur := goleak.IgnoreCurrent() 54 // defer goleak.VerifyNone(t, cur) 55 withNoGSTLeaks(t, func() { 56 rng := rand.New(rand.NewSource(42)) 57 randomData := make([]byte, 1024*1024) // 1MB 58 _, err := rng.Read(randomData) 59 require.NoError(t, err) 60 packet, err := Packetize(context.Background(), &bus.Seg{ 61 Data: randomData, 62 }) 63 require.Error(t, err) 64 require.Nil(t, packet) 65 }) 66}