Live video on the AT Protocol
79
fork

Configure Feed

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

at natb/mute-param 105 lines 3.4 kB view raw
1package media 2 3// var RTCRecTestCases = []struct { 4// name string 5// fatalErrors bool 6// fixture string 7// expectedSegmentsMin int 8// expectedSegmentsMax int 9// }{ 10// { 11// name: "IntermittentTracks", 12// fatalErrors: false, 13// fixture: getFixture("intermittent-tracks.cbor"), 14// expectedSegmentsMin: 10, 15// expectedSegmentsMax: 15, 16// }, 17// { 18// name: "SegmentConvergenceIssues", 19// fatalErrors: true, 20// fixture: remote.RemoteFixture("6a1fb84e3c23405fc53161f59d5b837839c4889fc1a96533c82fb44fafc51d27/2025-11-14T22-41-20-399Z.cbor"), 21// expectedSegmentsMin: 1, 22// expectedSegmentsMax: 10, 23// }, 24// { 25// name: "NekomimiPet", 26// fixture: remote.RemoteFixture("91176de4b92fb4c8e84116bd2be0070e96f964fcb8e127da4bfa7020317f4195/nekomimi.pet.rtcrec.cbor"), 27// fatalErrors: true, 28// expectedSegmentsMin: 29, 29// expectedSegmentsMax: 29, 30// }, 31// } 32 33// func TestRTCRecording(t *testing.T) { 34 35// previous := FatalSegmentationErrors 36// defer func() { 37// FatalSegmentationErrors = previous 38// }() 39// // ctx := context.Background() 40// // mm, ms := getStaticTestMediaManager(t) 41// for _, testCase := range RTCRecTestCases { 42// t.Run(testCase.name, func(t *testing.T) { 43// withNoGSTLeaks(t, func() { 44// ctx := context.Background() 45// dir, err := os.MkdirTemp("", "rtcrec-test-*") 46// require.NoError(t, err) 47// defer os.RemoveAll(dir) 48// cli := &config.CLI{} 49// fs := cli.NewFlagSet("rtcrec-test") 50// err = cli.Parse(fs, []string{ 51// "--data-dir", dir, 52// "-wide-open=true", 53// "--segment-debug-dir", "/home/iameli/testvids/nekomimi.pet", 54// }) 55// require.NoError(t, err) 56// mm, err := MakeMediaManager(context.Background(), cli, nil, nil, nil, nil) 57// require.NoError(t, err) 58// priv, pub, err := spkey.GenerateStreamKey() 59// require.NoError(t, err) 60// signer, err := spkey.KeyToSigner(priv) 61// require.NoError(t, err) 62// mediaSigner, err := MakeMediaSigner(ctx, cli, pub.DIDKey(), signer, nil) 63// require.NoError(t, err) 64 65// segsub := mm.NewSegment() 66// segCount := 0 67// go func() { 68// for range segsub { 69// segCount++ 70// } 71// }() 72 73// cur := goleak.IgnoreCurrent() 74// defer goleak.VerifyNone(t, cur) 75 76// FatalSegmentationErrors = testCase.fatalErrors 77// fd, err := os.Open(testCase.fixture) 78// require.NoError(t, err) 79// defer fd.Close() 80// pc, err := rtcrec.NewReplayPeerConnection(ctx, fd) 81// require.NoError(t, err) 82// done := make(chan error) 83// _, err = mm.WebRTCIngest(ctx, &webrtc.SessionDescription{SDP: "placeholder"}, mediaSigner, pc, done) 84// require.NoError(t, err) 85// // fmt.Println(answer.SDP) 86// <-done 87 88// // the segment getting ingested is ever so slightly after the done, which doesn't matter except in tests, just do a backoff for checking 89// ticker := backoff.NewTicker(backoff.NewExponentialBackOff()) 90// defer ticker.Stop() 91// for i := 0; i < 10; i++ { 92// if segCount >= testCase.expectedSegmentsMin { 93// break 94// } 95// if i < 9 { 96// <-ticker.C 97// } 98// } 99// require.GreaterOrEqual(t, segCount, testCase.expectedSegmentsMin) 100// require.LessOrEqual(t, segCount, testCase.expectedSegmentsMax) 101// }) 102// }) 103// } 104 105// }