diff --git a/.github/workflows/tquic-goodput-debug.yml b/.github/workflows/tquic-goodput-debug.yml new file mode 100644 index 00000000..a7a0d041 --- /dev/null +++ b/.github/workflows/tquic-goodput-debug.yml @@ -0,0 +1,86 @@ +name: GoodputDebug + +on: + schedule: + - cron: '30 1 * * *' + workflow_dispatch: + +env: + CARGO_TERM_COLOR: always + QUIC_IMAGES: gquiche=tquicgroup/qirgq,lsquic=tquicgroup/qirls,picoquic=tquicgroup/qirpq,quiche=tquicgroup/qircq + +jobs: + measure: + runs-on: ubuntu-latest + + strategy: + matrix: + impl: [tquic,lsquic] + case: [goodput10m] + cc: [bbr] + + # The scheduled workflow only runs for the main repository. + # You can manually trigger it if necessary. + if: ${{ ( github.event_name == 'schedule' && github.repository == 'tencent/tquic' ) || github.event_name == 'workflow_dispatch' }} + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: Build docker image + run: docker build -t tquic_interop:v1 -f interop/Dockerfile . + + - name: Install quic-interop-runner + run: | + git clone https://github.com/tquic-group/quic-interop-runner.git + cd quic-interop-runner + pip3 install -r requirements.txt + + - name: Install dependencies + run: | + sudo modprobe ip6table_filter + sudo add-apt-repository -y ppa:wireshark-dev/stable + sudo apt install -y tshark + + - name: Run the interop tests + run: | + cd quic-interop-runner + python3 run.py -r "$QUIC_IMAGES,tquic=tquic_interop:v1" -s ${{ matrix.impl }} -c ${{ matrix.impl }} -t ${{ matrix.case }} -a ${{ matrix.cc }} -d -n "drop-rate --delay=15ms --bandwidth=10Mbps --queue=25 --rate_to_server=0 --rate_to_client=0" -j ${{ matrix.case }}-0-${{ matrix.cc }}-${{ matrix.impl }}.json + python3 run.py -r "$QUIC_IMAGES,tquic=tquic_interop:v1" -s ${{ matrix.impl }} -c ${{ matrix.impl }} -t ${{ matrix.case }} -a ${{ matrix.cc }} -d -n "drop-rate --delay=15ms --bandwidth=10Mbps --queue=25 --rate_to_server=3 --rate_to_client=3" -j ${{ matrix.case }}-3-${{ matrix.cc }}-${{ matrix.impl }}.json + + - name: Store measurement results + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.case }}-${{ matrix.cc }}-${{ matrix.impl }} + path: quic-interop-runner/goodput*.json + + result: + runs-on: ubuntu-latest + needs: measure + steps: + - name: Download all workflow run artifacts + uses: actions/download-artifact@v4 + + - name: Display structure of downloaded files + run: ls -R + + - name: Display all measurement details + run: grep "details.*" . -Ro + + - name: Download plot tools + uses: actions/checkout@v4 + with: + path: tools + + - name: Install dependencies + run: | + sudo apt install python3-matplotlib + + - name: Plot all measurement results + run: python3 tools/.github/workflows/plot-goodput.py . + + - name: Store all measurement results + uses: actions/upload-artifact@v4 + with: + name: goodput-all-result + path: goodput* diff --git a/interop/run_endpoint.sh b/interop/run_endpoint.sh index 030c6ec6..e29667d4 100644 --- a/interop/run_endpoint.sh +++ b/interop/run_endpoint.sh @@ -64,7 +64,7 @@ esac # Note: You can add extra command-line options to tquic_client/tquic_sever by # using the `EXTRA_ARGS` environment variable. -COMMON_ARGS="--keylog-file $SSLKEYLOGFILE --log-level DEBUG --log-file $LOG_DIR/$ROLE.log --idle-timeout 30000 --handshake-timeout 30000 --initial-rtt 100 --congestion-control-algor $CC_ALGOR $EXTRA_ARGS" +COMMON_ARGS="--keylog-file $SSLKEYLOGFILE --log-level trace --log-file $LOG_DIR/$ROLE.log --idle-timeout 30000 --handshake-timeout 30000 --initial-rtt 100 --congestion-control-algor $CC_ALGOR $EXTRA_ARGS" if [ "$TESTCASE" != "transfer" ]; then COMMON_ARGS="$COMMON_ARGS --qlog-dir $QLOG_DIR"