Merge pull request #5357 from rata/1.5-fix-CI

[1.5] Fix netdev in CI
This commit is contained in:
Akihiro Suda
2026-07-08 16:24:08 +09:00
committed by GitHub
3 changed files with 34 additions and 16 deletions
+21 -14
View File
@@ -3,6 +3,17 @@
load helpers load helpers
function create_netns() { function create_netns() {
mtu_value=1789
mac_address="00:11:22:33:44:55"
global_ip="169.254.169.77/32"
# Create a dummy interface to move to the container.
# Specify all link-level parameters at creation time, this way it is not created without
# those values unassigned and we might race with host's daemons to set them.
ip link add dummy0 address "$mac_address" mtu $mtu_value type dummy
udevadm settle
ip address add "$global_ip" dev dummy0
# Create a temporary name for the test network namespace. # Create a temporary name for the test network namespace.
tmp=$(mktemp -u) tmp=$(mktemp -u)
ns_name=$(basename "$tmp") ns_name=$(basename "$tmp")
@@ -13,8 +24,17 @@ function create_netns() {
} }
function delete_netns() { function delete_netns() {
[ -v ns_name ] || return
# The interface shouldn't be on the host, but if we failed to move it to the container, it
# might. Let's delete it if we created one (i.e. if ns_name is defined).
ip link del dev dummy0 2>/dev/null
# Delete the namespace only if the ns_name variable is set. # Delete the namespace only if the ns_name variable is set.
[ -v ns_name ] && ip netns del "$ns_name" ip netns del "$ns_name"
unset ns_name
unset ns_path
} }
function setup() { function setup() {
@@ -22,13 +42,9 @@ function setup() {
requires criu root requires criu root
setup_busybox setup_busybox
# Create a dummy interface to move to the container.
ip link add dummy0 type dummy
} }
function teardown() { function teardown() {
ip link del dev dummy0
delete_netns delete_netns
teardown_bundle teardown_bundle
} }
@@ -139,15 +155,6 @@ function simple_cr() {
} }
@test "checkpoint and restore with netdevice" { @test "checkpoint and restore with netdevice" {
# Set custom parameters to the netdevice to validate those are respected
mtu_value=1789
mac_address="00:11:22:33:44:55"
global_ip="169.254.169.77/32"
ip link set mtu "$mtu_value" dev dummy0
ip link set address "$mac_address" dev dummy0
ip address add "$global_ip" dev dummy0
# Tell runc which network namespace to use. # Tell runc which network namespace to use.
create_netns create_netns
update_config '(.. | select(.type? == "network")) .path |= "'"$ns_path"'"' update_config '(.. | select(.type? == "network")) .path |= "'"$ns_path"'"'
+11 -2
View File
@@ -18,8 +18,13 @@ function setup_netns() {
} }
function delete_netns() { function delete_netns() {
[ -v ns_name ] || return
# Delete the namespace only if the ns_name variable is set. # Delete the namespace only if the ns_name variable is set.
[ -v ns_name ] && ip netns del "$ns_name" ip netns del "$ns_name"
unset ns_name
unset ns_path
} }
function setup() { function setup() {
@@ -28,10 +33,14 @@ function setup() {
# Create a dummy interface to move to the container. # Create a dummy interface to move to the container.
ip link add dummy0 type dummy ip link add dummy0 type dummy
udevadm settle
} }
function teardown() { function teardown() {
ip link del dev dummy0 # The interface might be on the host or not, depending the test. If it's on the host, let's
# delete it.
ip link del dev dummy0 2>/dev/null
delete_netns delete_netns
teardown_bundle teardown_bundle
} }
+2
View File
@@ -252,6 +252,7 @@ function teardown() {
# Create a dummy interface to move to the container. # Create a dummy interface to move to the container.
ip link add dummy0 type dummy ip link add dummy0 type dummy
udevadm settle
update_config ' .linux.netDevices |= {"dummy0": {} } update_config ' .linux.netDevices |= {"dummy0": {} }
| .process.args |= ["ip", "address", "show", "dev", "dummy0"]' | .process.args |= ["ip", "address", "show", "dev", "dummy0"]'
@@ -269,6 +270,7 @@ function teardown() {
# Create a dummy interface to move to the container. # Create a dummy interface to move to the container.
ip link add dummy0 type dummy ip link add dummy0 type dummy
udevadm settle
update_config ' .linux.netDevices |= { "dummy0": { "name" : "ctr_dummy0" } } update_config ' .linux.netDevices |= { "dummy0": { "name" : "ctr_dummy0" } }
| .process.args |= ["ip", "address", "show", "dev", "ctr_dummy0"]' | .process.args |= ["ip", "address", "show", "dev", "ctr_dummy0"]'