From 9c5438da65bba198bba2a2a127f3f6448dcb56c5 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 03 May 2026 14:12:59 +0000
Subject: [PATCH] NetworkDriver: fix return type annotation in create_interface
---
test_integration.sh | 204 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 195 insertions(+), 9 deletions(-)
diff --git a/test_integration.sh b/test_integration.sh
index f1576f4..e695f08 100755
--- a/test_integration.sh
+++ b/test_integration.sh
@@ -1,14 +1,21 @@
-#!/bin/sh
+#!/bin/bash
-set -e
+set -e -x
NAME=${NAME:-jacekkow/pyveth}
VERSION=${VERSION:-latest}
PLUGIN="${NAME}:${VERSION}"
+docker network rm test1 || true
+docker network rm test2 || true
+
docker plugin install jacekkow/pyipam:latest || true
+
+##########################
+# Test address assignment
+
docker network create \
--internal \
--driver "${PLUGIN}" \
@@ -26,8 +33,14 @@
alpine \
/sbin/ip addr show
)
-echo "${ADDRESSES}" | grep 192.168.255.129/24
-echo "${ADDRESSES}" | grep 2001:db8:aaaa:bbbb::1/32
+if ! echo "${ADDRESSES}" | grep 192.168.255.129/24; then
+ echo "ERROR: invalid IPv4 address assigned"
+ exit 1
+fi
+if ! echo "${ADDRESSES}" | grep 2001:db8:aaaa:bbbb::1/32; then
+ echo "ERROR: invalid IPv6 address assigned"
+ exit 1
+fi
ADDRESSES=$(docker run --rm --network test1 \
@@ -35,14 +48,22 @@
alpine \
/sbin/ip addr show
)
-echo "${ADDRESSES}" | grep 192.168.255.25/24
-echo "${ADDRESSES}" | grep 2001:db8:dddd:eeee:ffff:1:2:3/32
+if ! echo "${ADDRESSES}" | grep 192.168.255.25/24; then
+ echo "ERROR: invalid IPv4 address assigned"
+ exit 1
+fi
+if ! echo "${ADDRESSES}" | grep 2001:db8:dddd:eeee:ffff:1:2:3/32; then
+ echo "ERROR: invalid IPv6 address assigned"
+ exit 1
+fi
docker network rm test1
+######################
+# Test routing config
+
docker network create \
- --internal \
--driver "${PLUGIN}" \
--ipam-driver jacekkow/pyipam:latest \
--ipv6 \
@@ -56,12 +77,177 @@
alpine \
/sbin/ip route show
)
-echo "${ROUTES}" | grep 192.168.255.254
+if ! echo "${ROUTES}" | grep 192.168.255.254; then
+ echo "ERROR: invalid IPv4 route"
+ exit 1
+fi
ROUTES=$(docker run --rm --network test2 \
alpine \
/sbin/ip -6 route show
)
-echo "${ROUTES}" | grep 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
+if ! echo "${ROUTES}" | grep 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff; then
+ echo "ERROR: invalid IPv6 route"
+ exit 1
+fi
+
+docker network rm test2
+
+
+##############
+# Test nogw=1
+
+docker network create \
+ --driver "${PLUGIN}" \
+ --opt nogw=1 \
+ --ipam-driver jacekkow/pyipam:latest \
+ --ipv6 \
+ --subnet 192.168.255.0/24 \
+ --subnet 2001:db8::/32 \
+ test2
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip route show
+)
+if echo "${ROUTES}" | grep 192.168.255.254; then
+ echo "ERROR: IPv4 route assigned with nogw=1"
+ exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip -6 route show
+)
+if echo "${ROUTES}" | grep 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff; then
+ echo "ERROR: IPv6 route assigned with nogw=1"
+ exit 1
+fi
+
+docker network rm test2
+
+
+###############
+# Test nogw4=1
+
+docker network create \
+ --driver "${PLUGIN}" \
+ --opt nogw4=1 \
+ --ipam-driver jacekkow/pyipam:latest \
+ --ipv6 \
+ --subnet 192.168.255.0/24 \
+ --subnet 2001:db8::/32 \
+ --gateway 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff \
+ test2
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip route show
+)
+if echo "${ROUTES}" | grep 192.168.255.254; then
+ echo "ERROR: IPv4 route assigned with nogw4=1"
+ exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip -6 route show
+)
+if ! echo "${ROUTES}" | grep 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff; then
+ echo "ERROR: IPv6 route not assigned with nogw4=1"
+ exit 1
+fi
+
+docker network rm test2
+
+
+################
+# Test nogw6=1
+
+docker network create \
+ --driver "${PLUGIN}" \
+ --opt nogw6=1 \
+ --ipam-driver jacekkow/pyipam:latest \
+ --ipv6 \
+ --subnet 192.168.255.0/24 \
+ --gateway 192.168.255.254 \
+ --subnet 2001:db8::/32 \
+ test2
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip route show
+)
+if ! echo "${ROUTES}" | grep 192.168.255.254; then
+ echo "ERROR: IPv4 route not assigned with nogw6=1"
+ exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip -6 route show
+)
+if echo "${ROUTES}" | grep 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff; then
+ echo "ERROR: IPv6 route assigned with nogw6=1"
+ exit 1
+fi
+
+docker network rm test2
+
+
+###############
+# Test gw4/gw6
+
+docker network create \
+ --internal \
+ --driver "${PLUGIN}" \
+ --opt nogw=1 \
+ --opt gw4=192.168.254.1 \
+ --ipam-driver jacekkow/pyipam:latest \
+ --ipam-opt ptp=1 \
+ --ipv6 \
+ --subnet 192.168.255.0/24 \
+ --subnet 2001:db8::/32 \
+ test2
+
+ADDRESSES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip addr show
+)
+if ! echo "${ADDRESSES}" | grep 192.168.255.0/32; then
+ echo "ERROR: invalid PtP address assigned"
+ exit 1
+fi
+if ! echo "${ADDRESSES}" | grep 2001:db8::/128; then
+ echo "ERROR: invalid PtP address assigned"
+ exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip route show
+)
+if ! echo "${ROUTES}" | grep "via 192.168.254.1"; then
+ echo "ERROR: IPv4 route not assigned with gw4=..."
+ exit 1
+fi
+
+ROUTES=$(docker run --rm --network test2 \
+ alpine \
+ /sbin/ip -6 route show
+)
+if echo "${ROUTES}" | grep default; then
+ echo "ERROR: IPv6 route assigned with nogw=1"
+ exit 1
+fi
+
+ROUTES=$(docker run --rm --network name=test2,driver-opt=gw6=fe80::1 \
+ alpine \
+ /sbin/ip -6 route show
+)
+if ! echo "${ROUTES}" | grep "via fe80::1"; then
+ echo "ERROR: IPv6 route not assigned with per-container gw6=..."
+ exit 1
+fi
docker network rm test2
--
Gitblit v1.10.0