summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorChristian Hopps <chopps@labn.net>2023-06-08 19:47:01 +0200
committerChristian Hopps <chopps@labn.net>2023-06-09 09:19:20 +0200
commit3c43eaa7d487e3d0778f56abcf3a7ea3f7d94f67 (patch)
tree60ab0f8a443e6b9070ec15f7457376996ba85c8a /docker
parentMerge pull request #13745 from FRRouting/revert-13509-bgp_nht_other_if_cases (diff)
downloadfrr-3c43eaa7d487e3d0778f56abcf3a7ea3f7d94f67.tar.xz
frr-3c43eaa7d487e3d0778f56abcf3a7ea3f7d94f67.zip
docker: ubuntu-ci 18.04 -> 22.04, topotest parallel run examples
Update the READMEs, and give example of a full parallel topotest run with result extraction for analyze.py Signed-off-by: Christian Hopps <chopps@labn.net>
Diffstat (limited to 'docker')
-rw-r--r--docker/ubuntu-ci/Dockerfile125
-rwxr-xr-xdocker/ubuntu-ci/docker-start (renamed from docker/ubuntu18-ci/docker-start)0
-rw-r--r--docker/ubuntu18-ci/Dockerfile73
-rw-r--r--docker/ubuntu18-ci/README.md44
-rw-r--r--docker/ubuntu20-ci/Dockerfile78
-rw-r--r--docker/ubuntu20-ci/README.md16
-rwxr-xr-xdocker/ubuntu20-ci/docker-start8
-rw-r--r--docker/ubuntu22-ci/README.md57
8 files changed, 196 insertions, 205 deletions
diff --git a/docker/ubuntu-ci/Dockerfile b/docker/ubuntu-ci/Dockerfile
new file mode 100644
index 000000000..ada7a48d3
--- /dev/null
+++ b/docker/ubuntu-ci/Dockerfile
@@ -0,0 +1,125 @@
+ARG UBUNTU_VERSION=22.04
+FROM ubuntu:$UBUNTU_VERSION
+
+ARG DEBIAN_FRONTEND=noninteractive
+ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
+
+# Update and install build requirements.
+RUN apt update && apt upgrade -y && \
+ # Basic build requirements from documentation
+ apt-get install -y \
+ autoconf \
+ automake \
+ bison \
+ build-essential \
+ flex \
+ git \
+ install-info \
+ libc-ares-dev \
+ libcap-dev \
+ libelf-dev \
+ libjson-c-dev \
+ libpam0g-dev \
+ libreadline-dev \
+ libsnmp-dev \
+ libtool \
+ make \
+ perl \
+ pkg-config \
+ python3-dev \
+ python3-sphinx \
+ texinfo \
+ && \
+ # Protobuf build requirements
+ apt-get install -y \
+ libprotobuf-c-dev \
+ protobuf-c-compiler \
+ && \
+ # Libyang2 extra build requirements
+ apt-get install -y \
+ cmake \
+ libpcre2-dev \
+ && \
+ # Runtime/triage/testing requirements
+ apt-get install -y \
+ curl \
+ gdb \
+ iproute2 \
+ iputils-ping \
+ liblua5.3-dev \
+ libssl-dev \
+ lua5.3 \
+ net-tools \
+ python2 \
+ python3-pip \
+ snmp \
+ snmp-mibs-downloader \
+ snmpd \
+ sudo \
+ time \
+ tshark \
+ valgrind \
+ yodl \
+ && \
+ download-mibs && \
+ wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/iana/IANA-IPPM-METRICS-REGISTRY-MIB -O /usr/share/snmp/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB && \
+ wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/SNMPv2-PDU -O /usr/share/snmp/mibs/ietf/SNMPv2-PDU && \
+ wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/IPATM-IPMC-MIB -O /usr/share/snmp/mibs/ietf/IPATM-IPMC-MIB && \
+ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output /tmp/get-pip.py && \
+ python2 /tmp/get-pip.py && \
+ rm -f /tmp/get-pip.py && \
+ python3 -m pip install wheel && \
+ python3 -m pip install pytest && \
+ python3 -m pip install pytest-sugar && \
+ python3 -m pip install pytest-xdist && \
+ python3 -m pip install "scapy>=2.4.2" && \
+ python3 -m pip install xmltodict && \
+ python3 -m pip install grpcio grpcio-tools && \
+ python2 -m pip install 'exabgp<4.0.0'
+
+RUN groupadd -r -g 92 frr && \
+ groupadd -r -g 85 frrvty && \
+ adduser --system --ingroup frr --home /home/frr \
+ --gecos "FRR suite" --shell /bin/bash frr && \
+ usermod -a -G frrvty frr && \
+ useradd -d /var/run/exabgp/ -s /bin/false exabgp && \
+ echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
+ mkdir -p /home/frr && chown frr.frr /home/frr
+
+USER frr:frr
+
+# build and install libyang2
+RUN cd && pwd && ls -al && \
+ git clone https://github.com/CESNET/libyang.git && \
+ cd libyang && \
+ git checkout v2.1.80 && \
+ mkdir build; cd build && \
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:String="Release" .. && \
+ make -j $(nproc) && \
+ sudo make install
+
+COPY --chown=frr:frr . /home/frr/frr/
+
+RUN cd ~/frr && \
+ ./bootstrap.sh && \
+ ./configure \
+ --prefix=/usr \
+ --localstatedir=/var/run/frr \
+ --sbindir=/usr/lib/frr \
+ --sysconfdir=/etc/frr \
+ --enable-sharpd \
+ --enable-multipath=64 \
+ --enable-user=frr \
+ --enable-group=frr \
+ --enable-vty-group=frrvty \
+ --enable-snmp=agentx \
+ --enable-scripting \
+ --with-pkg-extra-version=-my-manual-build && \
+ make -j $(nproc) && \
+ sudo make install
+
+RUN cd ~/frr && make check || true
+
+COPY docker/ubuntu-ci/docker-start /usr/sbin/docker-start
+CMD ["/usr/sbin/docker-start"]
diff --git a/docker/ubuntu18-ci/docker-start b/docker/ubuntu-ci/docker-start
index 9a45c722f..9a45c722f 100755
--- a/docker/ubuntu18-ci/docker-start
+++ b/docker/ubuntu-ci/docker-start
diff --git a/docker/ubuntu18-ci/Dockerfile b/docker/ubuntu18-ci/Dockerfile
deleted file mode 100644
index dab860673..000000000
--- a/docker/ubuntu18-ci/Dockerfile
+++ /dev/null
@@ -1,73 +0,0 @@
-FROM ubuntu:18.04
-
-ARG DEBIAN_FRONTEND=noninteractive
-ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
-# Update Ubuntu Software repository
-RUN apt update && \
- apt-get install -y \
- git autoconf automake libtool make libreadline-dev texinfo \
- pkg-config libpam0g-dev libjson-c-dev bison flex python3-pip \
- libc-ares-dev python3-dev python3-sphinx \
- install-info build-essential libsnmp-dev perl libcap-dev \
- libelf-dev libprotobuf-c-dev protobuf-c-compiler \
- sudo gdb iputils-ping time \
- python-pip net-tools iproute2 && \
- python3 -m pip install wheel && \
- python3 -m pip install pytest && \
- python3 -m pip install pytest-xdist && \
- python3 -m pip install "scapy>=2.4.2" && \
- python3 -m pip install xmltodict && \
- python2 -m pip install 'exabgp<4.0.0'
-
-RUN groupadd -r -g 92 frr && \
- groupadd -r -g 85 frrvty && \
- adduser --system --ingroup frr --home /home/frr \
- --gecos "FRR suite" --shell /bin/bash frr && \
- usermod -a -G frrvty frr && \
- useradd -d /var/run/exabgp/ -s /bin/false exabgp && \
- echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
- mkdir -p /home/frr && chown frr.frr /home/frr
-
-#for libyang 2
-RUN apt-get install -y cmake libpcre2-dev
-
-USER frr:frr
-
-# build and install libyang2
-RUN cd && pwd && ls -al && \
- git clone https://github.com/CESNET/libyang.git && \
- cd libyang && \
- git checkout v2.0.0 && \
- mkdir build; cd build && \
- cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
- -DCMAKE_BUILD_TYPE:String="Release" .. && \
- make -j $(nproc) && \
- sudo make install
-
-COPY --chown=frr:frr . /home/frr/frr/
-
-RUN cd && ls -al && ls -al frr
-
-RUN cd ~/frr && \
- ./bootstrap.sh && \
- ./configure \
- --prefix=/usr \
- --localstatedir=/var/run/frr \
- --sbindir=/usr/lib/frr \
- --sysconfdir=/etc/frr \
- --enable-vtysh \
- --enable-pimd \
- --enable-sharpd \
- --enable-multipath=64 \
- --enable-user=frr \
- --enable-group=frr \
- --enable-vty-group=frrvty \
- --enable-snmp=agentx \
- --with-pkg-extra-version=-my-manual-build && \
- make -j $(nproc) && \
- sudo make install
-
-RUN cd ~/frr && make check || true
-
-COPY docker/ubuntu18-ci/docker-start /usr/sbin/docker-start
-CMD ["/usr/sbin/docker-start"]
diff --git a/docker/ubuntu18-ci/README.md b/docker/ubuntu18-ci/README.md
deleted file mode 100644
index 4e8ab891e..000000000
--- a/docker/ubuntu18-ci/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-# Ubuntu 18.04
-
-This builds an ubuntu 18.04 container for dev / test
-
-# Build
-
-```
-docker build -t frr-ubuntu18:latest -f docker/ubuntu18-ci/Dockerfile .
-```
-
-# Running
-
-```
-docker run -d --privileged --name frr-ubuntu18 --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu18:latest
-```
-
-# make check
-
-```
-docker exec frr-ubuntu18 bash -c 'cd ~/frr ; make check'
-```
-
-# interactive bash
-```
-docker exec -it frr-ubuntu18 bash
-```
-
-# topotest -- when Host O/S is Ubuntu only
-
-```
-docker exec frr-ubuntu18 bash -c 'cd ~/frr/tests/topotests/ospf-topo1 ; sudo pytest test_ospf_topo1.py'
-```
-
-# stop & remove container
-
-```
-docker stop frr-ubuntu18 ; docker rm frr-ubuntu18
-```
-
-# remove image
-
-```
-docker rmi frr-ubuntu18:latest
-```
diff --git a/docker/ubuntu20-ci/Dockerfile b/docker/ubuntu20-ci/Dockerfile
deleted file mode 100644
index 7e49910a7..000000000
--- a/docker/ubuntu20-ci/Dockerfile
+++ /dev/null
@@ -1,78 +0,0 @@
-FROM ubuntu:20.04
-
-ARG DEBIAN_FRONTEND=noninteractive
-ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
-# Update Ubuntu Software repository
-RUN apt update && \
- apt-get install -y \
- git autoconf automake libtool make libreadline-dev texinfo \
- pkg-config libpam0g-dev libjson-c-dev bison flex python3-pip \
- libc-ares-dev python3-dev python3-sphinx \
- install-info build-essential libsnmp-dev perl \
- libcap-dev python2 libelf-dev libprotobuf-c-dev protobuf-c-compiler \
- sudo gdb curl iputils-ping time \
- lua5.3 liblua5.3-dev \
- net-tools iproute2 && \
- curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output /tmp/get-pip.py && \
- python2 /tmp/get-pip.py && \
- rm -f /tmp/get-pip.py && \
- python3 -m pip install wheel && \
- python3 -m pip install pytest && \
- python3 -m pip install pytest-xdist && \
- python3 -m pip install "scapy>=2.4.2" && \
- python3 -m pip install xmltodict && \
- python2 -m pip install 'exabgp<4.0.0'
-
-RUN groupadd -r -g 92 frr && \
- groupadd -r -g 85 frrvty && \
- adduser --system --ingroup frr --home /home/frr \
- --gecos "FRR suite" --shell /bin/bash frr && \
- usermod -a -G frrvty frr && \
- useradd -d /var/run/exabgp/ -s /bin/false exabgp && \
- echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
- mkdir -p /home/frr && chown frr.frr /home/frr
-
-#for libyang 2
-RUN apt-get install -y cmake libpcre2-dev
-
-USER frr:frr
-
-# build and install libyang2
-RUN cd && pwd && ls -al && \
- git clone https://github.com/CESNET/libyang.git && \
- cd libyang && \
- git checkout v2.0.0 && \
- mkdir build; cd build && \
- cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
- -DCMAKE_BUILD_TYPE:String="Release" .. && \
- make -j $(nproc) && \
- sudo make install
-
-COPY --chown=frr:frr . /home/frr/frr/
-
-RUN cd && ls -al && ls -al frr
-
-RUN cd ~/frr && \
- ./bootstrap.sh && \
- ./configure \
- --prefix=/usr \
- --localstatedir=/var/run/frr \
- --sbindir=/usr/lib/frr \
- --sysconfdir=/etc/frr \
- --enable-vtysh \
- --enable-pimd \
- --enable-sharpd \
- --enable-multipath=64 \
- --enable-user=frr \
- --enable-group=frr \
- --enable-vty-group=frrvty \
- --enable-snmp=agentx \
- --enable-scripting \
- --with-pkg-extra-version=-my-manual-build && \
- make -j $(nproc) && \
- sudo make install
-
-RUN cd ~/frr && make check || true
-
-COPY docker/ubuntu20-ci/docker-start /usr/sbin/docker-start
-CMD ["/usr/sbin/docker-start"]
diff --git a/docker/ubuntu20-ci/README.md b/docker/ubuntu20-ci/README.md
index 11138c650..536f8e2e3 100644
--- a/docker/ubuntu20-ci/README.md
+++ b/docker/ubuntu20-ci/README.md
@@ -5,13 +5,25 @@ This builds an ubuntu 20.04 container for dev / test
# Build
```
-docker build -t frr-ubuntu20:latest -f docker/ubuntu20-ci/Dockerfile .
+docker build -t frr-ubuntu20:latest --build-arg=UBUNTU_VERSION=20.04 -f docker/ubuntu-ci/Dockerfile .
+```
+
+# Running Full Topotest
+
+```
+docker run --init -it --privileged --name frr -v /lib/modules:/lib/modules frr-ubuntu22:latest bash -c 'cd ~/frr/tests/topotests ; sudo pytest -nauto --dist=loadfile'
+```
+
+# Extract results from the above run into `run-results` dir and analyze
+
+```
+tests/topotest/analyze.py -C frr -Ar run-results
```
# Running
```
-docker run -d --privileged --name frr-ubuntu20 --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu20:latest
+docker run -d --init --privileged --name frr-ubuntu20 --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu20:latest
```
# make check
diff --git a/docker/ubuntu20-ci/docker-start b/docker/ubuntu20-ci/docker-start
deleted file mode 100755
index 9a45c722f..000000000
--- a/docker/ubuntu20-ci/docker-start
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-if [ $(uname -a | grep -ci Ubuntu) -ge 1 ]; then
- #for topotests under ubuntu host
- sudo modprobe mpls-router mpls-iptunnel
- sudo /etc/init.d/openvswitch-switch start
-fi
-while true ; do sleep 365d ; done
diff --git a/docker/ubuntu22-ci/README.md b/docker/ubuntu22-ci/README.md
new file mode 100644
index 000000000..403abbf5b
--- /dev/null
+++ b/docker/ubuntu22-ci/README.md
@@ -0,0 +1,57 @@
+# Ubuntu 22.04
+
+This builds an ubuntu 22.04 container for dev / test
+
+# Build
+
+```
+docker build -t frr-ubuntu22:latest -f docker/ubuntu-ci/Dockerfile .
+```
+
+# Running Full Topotest
+
+```
+docker run --init -it --privileged --name frr -v /lib/modules:/lib/modules frr-ubuntu22:latest bash -c 'cd ~/frr/tests/topotests ; sudo pytest -nauto --dist=loadfile'
+```
+
+# Extract results from the above run into `run-results` dir and analyze
+
+```
+tests/topotest/analyze.py -C frr -Ar run-results
+```
+
+# Running
+
+```
+docker run -d --init --privileged --name frr --mount type=bind,source=/lib/modules,target=/lib/modules frr-ubuntu22:latest
+```
+
+# make check
+
+```
+docker exec frr bash -c 'cd ~/frr ; make check'
+```
+
+# interactive bash
+
+```
+docker exec -it frr bash
+```
+
+# topotest -- when Host O/S is Ubuntu only
+
+```
+docker exec frr bash -c 'cd ~/frr/tests/topotests/ospf-topo1 ; sudo pytest test_ospf_topo1.py'
+```
+
+# stop & remove container
+
+```
+docker stop frr ; docker rm frr
+```
+
+# remove image
+
+```
+docker rmi frr-ubuntu22:latest
+```