Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
3.4 kB · 105 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106package media
// var RTCRecTestCases = []struct {// name string// fatalErrors bool// fixture string// expectedSegmentsMin int// expectedSegmentsMax int// }{// {// name: "IntermittentTracks",// fatalErrors: false,// fixture: getFixture("intermittent-tracks.cbor"),// expectedSegmentsMin: 10,// expectedSegmentsMax: 15,// },// {// name: "SegmentConvergenceIssues",// fatalErrors: true,// fixture: remote.RemoteFixture("6a1fb84e3c23405fc53161f59d5b837839c4889fc1a96533c82fb44fafc51d27/2025-11-14T22-41-20-399Z.cbor"),// expectedSegmentsMin: 1,// expectedSegmentsMax: 10,// },// {// name: "NekomimiPet",// fixture: remote.RemoteFixture("91176de4b92fb4c8e84116bd2be0070e96f964fcb8e127da4bfa7020317f4195/nekomimi.pet.rtcrec.cbor"),// fatalErrors: true,// expectedSegmentsMin: 29,// expectedSegmentsMax: 29,// },// }
// func TestRTCRecording(t *testing.T) {
// previous := FatalSegmentationErrors// defer func() {// FatalSegmentationErrors = previous// }()// // ctx := context.Background()// // mm, ms := getStaticTestMediaManager(t)// for _, testCase := range RTCRecTestCases {// t.Run(testCase.name, func(t *testing.T) {// withNoGSTLeaks(t, func() {// ctx := context.Background()// dir, err := os.MkdirTemp("", "rtcrec-test-*")// require.NoError(t, err)// defer os.RemoveAll(dir)// cli := &config.CLI{}// fs := cli.NewFlagSet("rtcrec-test")// err = cli.Parse(fs, []string{// "--data-dir", dir,// "-wide-open=true",// "--segment-debug-dir", "/home/iameli/testvids/nekomimi.pet",// })// require.NoError(t, err)// mm, err := MakeMediaManager(context.Background(), cli, nil, nil, nil, nil)// require.NoError(t, err)// priv, pub, err := spkey.GenerateStreamKey()// require.NoError(t, err)// signer, err := spkey.KeyToSigner(priv)// require.NoError(t, err)// mediaSigner, err := MakeMediaSigner(ctx, cli, pub.DIDKey(), signer, nil)// require.NoError(t, err)
// segsub := mm.NewSegment()// segCount := 0// go func() {// for range segsub {// segCount++// }// }()
// cur := goleak.IgnoreCurrent()// defer goleak.VerifyNone(t, cur)
// FatalSegmentationErrors = testCase.fatalErrors// fd, err := os.Open(testCase.fixture)// require.NoError(t, err)// defer fd.Close()// pc, err := rtcrec.NewReplayPeerConnection(ctx, fd)// require.NoError(t, err)// done := make(chan error)// _, err = mm.WebRTCIngest(ctx, &webrtc.SessionDescription{SDP: "placeholder"}, mediaSigner, pc, done)// require.NoError(t, err)// // fmt.Println(answer.SDP)// <-done
// // the segment getting ingested is ever so slightly after the done, which doesn't matter except in tests, just do a backoff for checking// ticker := backoff.NewTicker(backoff.NewExponentialBackOff())// defer ticker.Stop()// for i := 0; i < 10; i++ {// if segCount >= testCase.expectedSegmentsMin {// break// }// if i < 9 {// <-ticker.C// }// }// require.GreaterOrEqual(t, segCount, testCase.expectedSegmentsMin)// require.LessOrEqual(t, segCount, testCase.expectedSegmentsMax)// })// })// }
// }