mirror of
https://github.com/datarhei/core.git
synced 2025-10-19 06:14:45 +08:00
Use buffer pool
This commit is contained in:
112
http/middleware/session/HLS_test.go
Normal file
112
http/middleware/session/HLS_test.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package session
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"net/url"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/datarhei/core/v16/mem"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestHLSSegmentReader(t *testing.T) {
|
||||
data, err := os.ReadFile("./fixtures/segments.txt")
|
||||
require.NoError(t, err)
|
||||
|
||||
r := bytes.NewReader(data)
|
||||
|
||||
br := &segmentReader{
|
||||
reader: io.NopCloser(r),
|
||||
buffer: &bytes.Buffer{},
|
||||
}
|
||||
|
||||
_, err = io.ReadAll(br)
|
||||
require.NoError(t, err)
|
||||
|
||||
segments := br.getSegments("/foobar")
|
||||
require.Equal(t, []string{
|
||||
"/foobar/test_0_0_0303.ts",
|
||||
"/foobar/test_0_0_0304.ts",
|
||||
"/foobar/test_0_0_0305.ts",
|
||||
"/foobar/test_0_0_0306.ts",
|
||||
"/foobar/test_0_0_0307.ts",
|
||||
"/foobar/test_0_0_0308.ts",
|
||||
"/foobar/test_0_0_0309.ts",
|
||||
"/foobar/test_0_0_0310.ts",
|
||||
}, segments)
|
||||
}
|
||||
|
||||
func BenchmarkHLSSegmentReader(b *testing.B) {
|
||||
pool := mem.NewBufferPool()
|
||||
|
||||
data, err := os.ReadFile("./fixtures/segments.txt")
|
||||
require.NoError(b, err)
|
||||
|
||||
rd := bytes.NewReader(data)
|
||||
r := io.NopCloser(rd)
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
rd.Reset(data)
|
||||
br := &segmentReader{
|
||||
reader: io.NopCloser(r),
|
||||
buffer: pool.Get(),
|
||||
}
|
||||
|
||||
_, err := io.ReadAll(br)
|
||||
require.NoError(b, err)
|
||||
|
||||
pool.Put(br.buffer)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHLSRewrite(t *testing.T) {
|
||||
data, err := os.ReadFile("./fixtures/segments.txt")
|
||||
require.NoError(t, err)
|
||||
|
||||
br := &sessionRewriter{
|
||||
buffer: &bytes.Buffer{},
|
||||
}
|
||||
|
||||
_, err = br.Write(data)
|
||||
require.NoError(t, err)
|
||||
|
||||
u, err := url.Parse("http://example.com/test.m3u8")
|
||||
require.NoError(t, err)
|
||||
|
||||
buffer := &bytes.Buffer{}
|
||||
|
||||
br.rewriteHLS("oT5GV8eWBbRAh4aib5egoK", u, buffer)
|
||||
|
||||
data, err = os.ReadFile("./fixtures/segments_with_session.txt")
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, data, buffer.Bytes())
|
||||
}
|
||||
|
||||
func BenchmarkHLSRewrite(b *testing.B) {
|
||||
pool := mem.NewBufferPool()
|
||||
|
||||
data, err := os.ReadFile("./fixtures/segments.txt")
|
||||
require.NoError(b, err)
|
||||
|
||||
u, err := url.Parse("http://example.com/test.m3u8")
|
||||
require.NoError(b, err)
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
br := &sessionRewriter{
|
||||
buffer: pool.Get(),
|
||||
}
|
||||
|
||||
_, err = br.Write(data)
|
||||
require.NoError(b, err)
|
||||
|
||||
buffer := pool.Get()
|
||||
|
||||
br.rewriteHLS("oT5GV8eWBbRAh4aib5egoK", u, buffer)
|
||||
|
||||
pool.Put(br.buffer)
|
||||
pool.Put(buffer)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user