MCPcopy Create free account
hub / github.com/Monibuca/engine / TestRing

Function TestRing

track/ring_test.go:12–65  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestRing(t *testing.T) {
13 w := &util.RingWriter[any, *AVFrame]{}
14 w.Init(10,func() *AVFrame {
15 return &AVFrame{}
16 })
17 ctx, _ := context.WithTimeout(context.Background(), time.Second*10)
18 go t.Run("writer", func(t *testing.T) {
19 for i := 0; ctx.Err() == nil; i++ {
20 w.Value.Data = i
21 normal := w.Step()
22 t.Log("write", i, normal)
23 time.Sleep(time.Millisecond * 50)
24 }
25 })
26 go t.Run("reader1", func(t *testing.T) {
27 var reader RingReader[any, *AVFrame]
28 err := reader.StartRead(w.Ring)
29 if err != nil {
30 t.Error(err)
31 return
32 }
33 for ctx.Err() == nil {
34 err = reader.ReadNext()
35 t.Log("read1", reader.Value.Data)
36 if err != nil {
37 t.Error(err)
38 break
39 }
40 time.Sleep(time.Millisecond * 10)
41 }
42 reader.StopRead()
43 <-ctx.Done()
44 })
45 // slow reader
46 t.Run("reader2", func(t *testing.T) {
47 var reader RingReader[any, *AVFrame]
48 err := reader.StartRead(w.Ring)
49 if err != nil {
50 t.Error(err)
51 return
52 }
53 for ctx.Err() == nil {
54 err = reader.ReadNext()
55 if err != nil {
56 // t.Error(err)
57 return
58 }
59 t.Log("read2", reader.Value.Data)
60 time.Sleep(time.Millisecond * 100)
61 }
62 reader.StopRead()
63 <-ctx.Done()
64 })
65}

Callers

nothing calls this directly

Calls 6

StepMethod · 0.80
StartReadMethod · 0.80
ReadNextMethod · 0.80
StopReadMethod · 0.80
ErrorMethod · 0.65
InitMethod · 0.45

Tested by

no test coverage detected