diff --git a/.github/workflows/interop-test.yml b/.github/workflows/interop-test.yml index cb34996e..e6eef727 100644 --- a/.github/workflows/interop-test.yml +++ b/.github/workflows/interop-test.yml @@ -77,6 +77,15 @@ jobs: sudo add-apt-repository ppa:wireshark-dev/nightly sudo apt-get update sudo apt-get install -y --no-install-recommends tshark + - name: Install Linux QUIC module + if: ${{ matrix.client == 'linuxquic' || inputs.server == 'linuxquic' }} + run: | + [ -f /usr/include/linux/quic.h ] && exit 0 + git clone https://github.com/lxin/quic.git + cd quic && sed -i '/LIBGNUTLS/d' configure.ac + ./autogen.sh && ./configure --prefix=/usr + sudo make -C modules install + cd ../ && rm -r quic - name: Install Python packages run: | pip install -U pip diff --git a/implementations.py b/implementations.py index 5eb43cc7..3ed020e9 100644 --- a/implementations.py +++ b/implementations.py @@ -2,6 +2,7 @@ import json from enum import Enum from typing import Dict +import os class Role(Enum): @@ -23,6 +24,8 @@ def get_implementations(filename: str) -> Dict[str, Dict[str, str | Role]]: with open(filename, "r") as f: data = json.load(f) for name, val in data.items(): + if name == "linuxquic" and not os.path.exists("/usr/include/linux/quic.h"): + continue implementations[name] = {"image": val["image"], "url": val["url"]} role = val["role"] if role == "server": diff --git a/implementations_quic.json b/implementations_quic.json index 7df33f8e..12981861 100644 --- a/implementations_quic.json +++ b/implementations_quic.json @@ -83,5 +83,10 @@ "image": "us-central1-docker.pkg.dev/golang-interop-testing/quic/go-x-net:latest", "url": "https://pkg.go.dev/golang.org/x/net/internal/quic", "role": "both" + }, + "linuxquic": { + "image": "quay.io/lxin/linuxquic-interop:latest", + "url": "https://github.com/lxin/quic", + "role": "both" } }