diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 35a57aa94..93f1bc0bd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,20 +14,20 @@ jobs: # Build for CentOS7 - name: Build on CentOS7, baseline - run: docker build -f trunk/Dockerfile.builds --target centos7-baseline . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos7-baseline . - name: Build on CentOS7, with SRT - run: docker build -f trunk/Dockerfile.builds --target centos7-srt . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos7-srt . - name: Build on CentOS7, without WebRTC - run: docker build -f trunk/Dockerfile.builds --target centos7-no-webrtc . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos7-no-webrtc . - name: Build on CentOS7, without ASM - run: docker build -f trunk/Dockerfile.builds --target centos7-no-asm . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos7-no-asm . - name: Build on CentOS7, C++98, no FFmpeg - run: docker build -f trunk/Dockerfile.builds --target centos7-ansi-no-ffmpeg . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos7-ansi-no-ffmpeg . # Build for CentOS8 - name: Build on CentOS8, baseline - run: docker build -f trunk/Dockerfile.builds --target centos8-baseline . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos8-baseline . - name: Build on CentOS8, with SRT - run: docker build -f trunk/Dockerfile.builds --target centos8-srt . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target centos8-srt . build-ubuntu: name: actions-test-build-ubuntu @@ -39,33 +39,19 @@ jobs: # Build for Ubuntu16 - name: Build on Ubuntu16, baseline - run: docker build -f trunk/Dockerfile.builds --target ubuntu16-baseline . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-baseline . - name: Build on Ubuntu16, with SRT - run: docker build -f trunk/Dockerfile.builds --target ubuntu16-srt . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-srt . # Build for Ubuntu18 - name: Build on Ubuntu18, baseline - run: docker build -f trunk/Dockerfile.builds --target ubuntu18-baseline . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu18-baseline . - name: Build on Ubuntu18, with SRT - run: docker build -f trunk/Dockerfile.builds --target ubuntu18-srt . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu18-srt . # Build for Ubuntu20 - name: Build on Ubuntu20, baseline - run: docker build -f trunk/Dockerfile.builds --target ubuntu20-baseline . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu20-baseline . - name: Build on Ubuntu20, with SRT - run: docker build -f trunk/Dockerfile.builds --target ubuntu20-srt . - - build-arm: - name: actions-test-build-arm - runs-on: ubuntu-20.04 - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - # Build for AARCH64 - - name: Build for AARCH64, baseline - run: docker build -f trunk/Dockerfile.builds --target aarch64-baseline . - - name: Build for AARCH64, with SRT - run: docker build -f trunk/Dockerfile.builds --target aarch64-srt . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu20-srt . build-cross: name: actions-test-build-cross @@ -77,17 +63,16 @@ jobs: # Cross Build for ARMv7 - name: Cross Build for ARMv7 - run: docker build -f trunk/Dockerfile.builds --target ubuntu16-cross-armv7 . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-cross-armv7 . # Cross Build for AARCH64 - name: Cross Build for AARCH64 - run: docker build -f trunk/Dockerfile.builds --target ubuntu16-cross-aarch64 . + run: DOCKER_BUILDKIT=1 docker build -f trunk/Dockerfile.builds --target ubuntu16-cross-aarch64 . build: name: actions-test-build needs: - build-centos - build-ubuntu - - build-arm - build-cross runs-on: ubuntu-20.04 diff --git a/trunk/3rdparty/srs-bench/srs/rtc_test.go b/trunk/3rdparty/srs-bench/srs/rtc_test.go index 4d2360120..5daa868b4 100644 --- a/trunk/3rdparty/srs-bench/srs/rtc_test.go +++ b/trunk/3rdparty/srs-bench/srs/rtc_test.go @@ -637,155 +637,6 @@ func TestRtcBasic_PublishPlay(t *testing.T) { }() } -// When republish a stream, the player stream SHOULD be continuous. -func TestRtcBasic_Republish(t *testing.T) { - ctx := logger.WithContext(context.Background()) - ctx, cancel := context.WithTimeout(ctx, time.Duration(*srsTimeout)*time.Millisecond) - - var r0, r1, r2, r3, r4 error - defer func(ctx context.Context) { - if err := filterTestError(ctx.Err(), r0, r1, r2, r3, r4); err != nil { - t.Errorf("Fail for err %+v", err) - } else { - logger.Tf(ctx, "test done with err %+v", err) - } - }(ctx) - - var resources []io.Closer - defer func() { - for _, resource := range resources { - _ = resource.Close() - } - }() - - var wg sync.WaitGroup - defer wg.Wait() - - // The event notify. - var thePublisher, theRepublisher *testPublisher - var thePlayer *testPlayer - - mainReady, mainReadyCancel := context.WithCancel(context.Background()) - publishReady, publishReadyCancel := context.WithCancel(context.Background()) - republishReady, republishReadyCancel := context.WithCancel(context.Background()) - - // Objects init. - wg.Add(1) - go func() { - defer wg.Done() - defer cancel() - - doInit := func() (err error) { - streamSuffix := fmt.Sprintf("basic-publish-play-%v-%v", os.Getpid(), rand.Int()) - - // Initialize player with private api. - if thePlayer, err = newTestPlayer(registerDefaultCodecs, func(play *testPlayer) error { - play.streamSuffix = streamSuffix - resources = append(resources, play) - - var nnPlayReadRTP uint64 - return play.Setup(*srsVnetClientIP, func(api *testWebRTCAPI) { - api.registry.Add(newRTPInterceptor(func(i *rtpInterceptor) { - i.rtpReader = func(payload []byte, attributes interceptor.Attributes) (int, interceptor.Attributes, error) { - select { - case <-republishReady.Done(): - if nnPlayReadRTP++; nnPlayReadRTP >= uint64(*srsPlayOKPackets) { - cancel() // Completed. - } - logger.Tf(ctx, "Play recv rtp %v packets", nnPlayReadRTP) - default: - logger.Tf(ctx, "Play recv rtp packet before republish") - } - return i.nextRTPReader.Read(payload, attributes) - } - })) - }) - }); err != nil { - return err - } - - // Initialize publisher with private api. - if thePublisher, err = newTestPublisher(registerDefaultCodecs, func(pub *testPublisher) error { - pub.streamSuffix = streamSuffix - pub.iceReadyCancel = publishReadyCancel - resources = append(resources, pub) - - var nnPubReadRTCP uint64 - return pub.Setup(*srsVnetClientIP, func(api *testWebRTCAPI) { - api.registry.Add(newRTCPInterceptor(func(i *rtcpInterceptor) { - i.rtcpReader = func(buf []byte, attributes interceptor.Attributes) (int, interceptor.Attributes, error) { - nn, attr, err := i.nextRTCPReader.Read(buf, attributes) - if nnPubReadRTCP++; nnPubReadRTCP > 0 && pub.cancel != nil { - pub.cancel() // We only cancel the publisher itself. - } - logger.Tf(ctx, "Publish recv rtcp %v packets", nnPubReadRTCP) - return nn, attr, err - } - })) - }) - }); err != nil { - return err - } - - // Initialize re-publisher with private api. - if theRepublisher, err = newTestPublisher(registerDefaultCodecs, func(pub *testPublisher) error { - pub.streamSuffix = streamSuffix - pub.iceReadyCancel = republishReadyCancel - resources = append(resources, pub) - - return pub.Setup(*srsVnetClientIP) - }); err != nil { - return err - } - - // Init done. - mainReadyCancel() - - <-ctx.Done() - return nil - } - - if err := doInit(); err != nil { - r1 = err - } - }() - - // Run publisher. - wg.Add(1) - go func() { - defer wg.Done() - defer cancel() - - select { - case <-ctx.Done(): - case <-mainReady.Done(): - pubCtx, pubCancel := context.WithCancel(ctx) - r2 = thePublisher.Run(logger.WithContext(pubCtx), pubCancel) - logger.Tf(ctx, "pub done, re-publish again") - - // Dispose the stream. - _ = thePublisher.Close() - - r4 = theRepublisher.Run(logger.WithContext(ctx), cancel) - logger.Tf(ctx, "re-pub done") - } - }() - - // Run player. - wg.Add(1) - go func() { - defer wg.Done() - defer cancel() - - select { - case <-ctx.Done(): - case <-publishReady.Done(): - r3 = thePlayer.Run(logger.WithContext(ctx), cancel) - logger.Tf(ctx, "play done") - } - }() -} - // The srs-server is DTLS server(passive), srs-bench is DTLS client which is active mode. // No.1 srs-bench: ClientHello // No.2 srs-server: ServerHello, Certificate, ServerKeyExchange, CertificateRequest, ServerHelloDone diff --git a/trunk/Dockerfile.builds b/trunk/Dockerfile.builds index 9c750eb37..ea91ac2c6 100644 --- a/trunk/Dockerfile.builds +++ b/trunk/Dockerfile.builds @@ -55,15 +55,6 @@ FROM ossrs/srs:ubuntu20 AS ubuntu20-srt COPY . /srs RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2 -######################################################## -FROM ossrs/srs:aarch64 AS aarch64-baseline -COPY . /srs -RUN cd /srs/trunk && ./configure --jobs=2 && make -j2 - -FROM ossrs/srs:aarch64 AS aarch64-srt -COPY . /srs -RUN cd /srs/trunk && ./configure --jobs=2 --srt=on && make -j2 - ######################################################## FROM ossrs/srs:ubuntu16 AS ubuntu16-cross-armv7 COPY . /srs