tests: add ipoe shared + chap-secrets auth, add ipoe+chap-secrets + lua #24
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run tests (big-endian) | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- master | |
- be | |
jobs: | |
Test-in-Alpine-s390x: | |
#if: ${{ false }} # disable for now | |
runs-on: ubuntu-24.04 | |
name: Test in Qemu (s390x Alpine) | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
path: "accel-ppp" | |
- name: Install build tools for qemu and required tools | |
run: > | |
sudo apt update && | |
NEEDRESTART_SUSPEND=1 DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true | |
sudo -E apt -y install wget openssh-client screen | |
libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev libslirp-dev ninja-build | |
- name: Build Qemu 9.0.2 | |
# Qemu 8.2 from Ubuntu24.04 has critical s390x-related bugs so Qemu9 is required | |
run: | | |
wget -nv https://github.com/qemu/qemu/archive/refs/tags/v9.0.2.tar.gz | |
tar -xf v9.0.2.tar.gz | |
cd qemu-9.0.2 | |
./configure --target-list=s390x-softmmu --enable-slirp | |
make -j | |
sudo make install | |
- name: Prepare qemu files | |
run: | | |
ssh-keygen -t ed25519 -q -N "" -f ssh-key | |
qemu-img create -f raw disk.raw 5G | |
wget -nv https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/netboot/vmlinuz-lts | |
wget -nv https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/netboot/initramfs-lts | |
- name: Run http server for ssh-key | |
run: | | |
sudo ip addr add 192.0.2.1/32 dev lo # stable ip for http server | |
screen -dmS httpserver python3 -m http.server 8000 | |
- name: Run target OS first time (for setup actions) | |
run: > | |
sudo screen -dmS qemu | |
qemu-system-s390x -M s390-ccw-virtio | |
-m 4096 -smp 2 -nographic | |
-net nic -net user,hostfwd=tcp::2222-:22 | |
-drive format=raw,file=disk.raw | |
-kernel vmlinuz-lts | |
-initrd initramfs-lts | |
-append "ip=dhcp alpine_repo=https://dl-cdn.alpinelinux.org/alpine/latest-stable/main | |
modloop=https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/netboot/modloop-lts | |
ssh_key=http://192.0.2.1:8000/ssh-key.pub" | |
- name: Check that target OS is running | |
run: | | |
sleep 1 | |
sudo screen -ls | |
- name: Wait for ssh connection | |
timeout-minutes: 30 | |
run: > | |
while ! ssh -o StrictHostKeyChecking=accept-new -p2222 -o ConnectTimeout=5 -i ssh-key root@localhost "exit 0"; | |
do | |
echo "Trying to establish ssh connection"; | |
sleep 5; | |
done; | |
cat ~/.ssh/known_hosts | |
- name: Setup alpine to disk | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "setup-alpine -c setup_alpine_conf && | |
sed -i '/^ROOTSSHKEY\|^DISKOPTS\|^APKREPOSOPTS=/d' setup_alpine_conf && | |
echo '' >> setup_alpine_conf && | |
echo 'DISKOPTS=\"-m sys /dev/vda\"' >> setup_alpine_conf && | |
echo 'ROOTSSHKEY=\"http://192.0.2.1:8000/ssh-key.pub\"' >> setup_alpine_conf && | |
echo 'APKREPOSOPTS=\"https://dl-cdn.alpinelinux.org/alpine/latest-stable/main\"' >> setup_alpine_conf && | |
cat setup_alpine_conf && | |
yes | setup-alpine -e -f setup_alpine_conf" | |
- name: Poweroff the VM | |
timeout-minutes: 30 | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "poweroff" && | |
while sudo screen -ls; | |
do | |
echo "Waiting for poweroff"; | |
sleep 5; | |
done; | |
- name: Run target OS | |
run: > | |
sudo screen -dmS qemu | |
qemu-system-s390x -M s390-ccw-virtio | |
-m 4096 -smp 2 -nographic | |
-net nic -net user,hostfwd=tcp::2222-:22 | |
-drive format=raw,file=disk.raw | |
- name: Check that target OS is running | |
run: | | |
sleep 1 | |
sudo screen -ls | |
- name: Wait for ssh connection | |
timeout-minutes: 30 | |
run: > | |
while ! ssh -o StrictHostKeyChecking=accept-new -p2222 -o ConnectTimeout=5 -i ssh-key root@localhost "exit 0"; | |
do | |
echo "Trying to establish ssh connection"; | |
sleep 5; | |
done; | |
cat ~/.ssh/known_hosts | |
- name: Display free space, current dir, kernel version and users | |
run: | | |
ssh -i ssh-key -p2222 root@localhost "df -h" | |
ssh -i ssh-key -p2222 root@localhost "pwd" | |
ssh -i ssh-key -p2222 root@localhost "uname -a" | |
ssh -i ssh-key -p2222 root@localhost "cat /etc/passwd" | |
- name: Install build tools (on target OS) | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "setup-apkrepos -o && apk add --no-cache git cmake make g++ pcre-dev openssl-dev linux-headers libucontext-dev lua5.1-dev linux-lts-dev py3-pip | |
ppp ppp-pppoe iproute2 dhclient && | |
(pip3 install pytest pytest-dependency pytest-order || pip3 install --break-system-packages pytest pytest-dependency pytest-order)" | |
- name: Copy source code to target OS | |
run: | | |
tar -Jcf accel-ppp.tar.xz accel-ppp | |
scp -i ssh-key -P2222 accel-ppp.tar.xz root@localhost: | |
ssh -i ssh-key -p2222 root@localhost "tar -xf accel-ppp.tar.xz" | |
- name: Build accel-ppp | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "cd accel-ppp && git config --global --add safe.directory '*' && | |
mkdir build && cd build && | |
cmake -DBUILD_IPOE_DRIVER=TRUE -DBUILD_VLAN_MON_DRIVER=TRUE -DCMAKE_INSTALL_PREFIX=/usr | |
-DKDIR=/usr/src/linux-headers-\`uname -r\` | |
-DLUA=TRUE -DSHAPER=TRUE -DRADIUS=TRUE .. && | |
make && make install" | |
- name: Run tests (not related to ipoe and vlan_mon drivers) | |
timeout-minutes: 5 | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "cd accel-ppp/tests && | |
python3 -m pytest -Wall --order-dependencies -v -m \"not ipoe_driver and not vlan_mon_driver\"" | |
- name: Display processes and dmesg after tests | |
if: ${{ always() }} | |
run: ssh -i ssh-key -p2222 -o ConnectTimeout=5 root@localhost "ps aux | grep accel- && dmesg" | |
- name: Insert ipoe kernel module | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "cd accel-ppp && | |
insmod build/drivers/ipoe/driver/ipoe.ko && | |
lsmod | grep ipoe" | |
- name: Run tests (not related to vlan_mon drivers) | |
timeout-minutes: 5 | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "cd accel-ppp/tests && | |
python3 -m pytest -Wall --order-dependencies -v -m \"not vlan_mon_driver\"" | |
- name: Display processes and dmesg after tests | |
if: ${{ always() }} | |
run: ssh -i ssh-key -p2222 -o ConnectTimeout=5 root@localhost "ps aux | grep accel- && dmesg" | |
- name: Insert vlan_mon kernel module | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "cd accel-ppp && | |
insmod build/drivers/vlan_mon/driver/vlan_mon.ko && | |
lsmod | grep vlan_mon" | |
- name: Run tests (all) | |
timeout-minutes: 5 | |
run: > | |
ssh -i ssh-key -p2222 root@localhost "cd accel-ppp/tests && | |
python3 -m pytest -Wall --order-dependencies -v" | |
- name: Display processes and dmesg after tests | |
if: ${{ always() }} | |
run: ssh -i ssh-key -p2222 -o ConnectTimeout=5 root@localhost "ps aux | grep accel- && dmesg" |