11package srt
22
33import (
4- "bufio"
54 "context"
65 "testing"
76 "time"
@@ -20,42 +19,8 @@ func TestSource(t *testing.T) {
2019 require .NoError (t , err )
2120 defer ln .Close ()
2221
23- go func () {
24- req , err2 := ln .Accept2 ()
25- require .NoError (t , err2 )
26-
27- require .Equal (t , "sidname" , req .StreamId ())
28- err2 = req .SetPassphrase ("ttest1234567" )
29- require .NoError (t , err2 )
30-
31- conn , err2 := req .Accept ()
32- require .NoError (t , err2 )
33- defer conn .Close ()
34-
35- track := & mpegts.Track {
36- Codec : & mpegts.CodecH264 {},
37- }
38-
39- bw := bufio .NewWriter (conn )
40- w := & mpegts.Writer {W : bw , Tracks : []* mpegts.Track {track }}
41- err2 = w .Initialize ()
42- require .NoError (t , err2 )
43-
44- err2 = w .WriteH264 (track , 0 , 0 , [][]byte {{ // IDR
45- 5 , 1 ,
46- }})
47- require .NoError (t , err2 )
48-
49- err2 = bw .Flush ()
50- require .NoError (t , err2 )
51-
52- // wait for internal SRT queue to be written
53- time .Sleep (500 * time .Millisecond )
54- }()
55-
5622 p := & test.StaticSourceParent {}
5723 p .Initialize ()
58- defer p .Close ()
5924
6025 so := & Source {
6126 ReadTimeout : conf .Duration (10 * time .Second ),
@@ -68,14 +33,50 @@ func TestSource(t *testing.T) {
6833 ctx , ctxCancel := context .WithCancel (context .Background ())
6934 defer ctxCancel ()
7035
36+ reloadConf := make (chan * conf.Path )
37+
7138 go func () {
7239 so .Run (defs.StaticSourceRunParams { //nolint:errcheck
7340 Context : ctx ,
7441 ResolvedSource : "srt://127.0.0.1:9002?streamid=sidname&passphrase=ttest1234567" ,
7542 Conf : & conf.Path {},
43+ ReloadConf : reloadConf ,
7644 })
7745 close (done )
7846 }()
7947
48+ req , err2 := ln .Accept2 ()
49+ require .NoError (t , err2 )
50+
51+ require .Equal (t , "sidname" , req .StreamId ())
52+ err2 = req .SetPassphrase ("ttest1234567" )
53+ require .NoError (t , err2 )
54+
55+ conn , err2 := req .Accept ()
56+ require .NoError (t , err2 )
57+ defer conn .Close ()
58+
59+ track := & mpegts.Track {Codec : & mpegts.CodecH264 {}}
60+
61+ w := & mpegts.Writer {W : conn , Tracks : []* mpegts.Track {track }}
62+ err2 = w .Initialize ()
63+ require .NoError (t , err2 )
64+
65+ err2 = w .WriteH264 (track , 0 , 0 , [][]byte {{ // IDR
66+ 5 , 1 ,
67+ }})
68+ require .NoError (t , err2 )
69+
70+ err = w .WriteH264 (track , 0 , 0 , [][]byte {{ //non-IDR
71+ 5 , 2 ,
72+ }})
73+ require .NoError (t , err )
74+
8075 <- p .Unit
76+
77+ // the source must be listening on ReloadConf
78+ reloadConf <- nil
79+
80+ // stop test reader before 2nd H264 packet is received to avoid a crash
81+ p .Close ()
8182}
0 commit comments