ci, k8s: Skip tests and teardowns that fail on k8s

Signed-off-by: Quique Llorente <ellorent@redhat.com>
This commit is contained in:
Quique Llorente 2021-04-21 13:24:11 +02:00 committed by Gris Ge
parent a64cfe38d5
commit 608840e140
10 changed files with 89 additions and 4 deletions

View File

@ -233,7 +233,7 @@ function upload_coverage {
}
function check_iface_exist {
exec_cmd "ip link | grep -q $1"
exec_cmd "ip link | grep -q ' $1'"
}
function prepare_network_environment {

View File

@ -69,6 +69,8 @@ spec:
value: "${COVERALLS_REPO_TOKEN}"
- name: SHIPPABLE
value: "${SHIPPABLE}"
- name: RUN_K8S
value: "true"
volumeMounts:
- name: dbus-socket
mountPath: /run/dbus/system_bus_socket
@ -77,6 +79,8 @@ spec:
- name: cgroup
mountPath: /sys/fs/cgroup
readOnly: true
- name: nm-profiles
mountPath: /etc/NetworkManager/system-connections/
securityContext:
privileged: true
volumes:
@ -91,11 +95,14 @@ spec:
hostPath:
path: /run/openvswitch/db.sock
type: Socket
- name: nm-profiles
hostPath:
path: /etc/NetworkManager/system-connections/
EOF
export POD_ID=conformance
$KUBECTL_CMD wait pod -n nmstate $POD_ID --for=condition=Ready --timeout=50s
[ -n "$debug_exit_shell" ] && trap k8s::open_shell EXIT || trap run_exit EXIT
$KUBECTL_CMD wait pod -n nmstate $POD_ID --for=condition=Ready --timeout=100s
}
function k8s::pre_test_setup {
set -x
@ -114,7 +121,7 @@ function k8s::pre_test_setup {
/proc/sys/kernel/core_pattern"
k8s::kubectl_exec "ulimit -c unlimited"
# Enable IPv6 in container globally
k8s::kubectl_exec "sysctl -w net.ipv6.conf.all.disable_ipv6=0"
k8s::kubectl_exec "echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6"
}
function k8s::start_cluster {

View File

@ -42,6 +42,7 @@ from .testlib import statelib
from .testlib.assertlib import assert_mac_address
from .testlib.bondlib import bond_interface
from .testlib.env import nm_major_minor_version
from .testlib.env import is_k8s
from .testlib.ifacelib import get_mac_address
from .testlib.ifacelib import ifaces_init
from .testlib.vlan import vlan_interface
@ -201,6 +202,15 @@ def test_add_bond_with_port_and_ipv4(eth1_up, eth2_up, setup_remove_bond99):
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=AssertionError,
strict=False,
)
def test_rollback_for_bond(eth1_up, eth2_up):
current_state = libnmstate.show()
desired_state = {

View File

@ -29,6 +29,7 @@ from libnmstate.schema import Route
from libnmstate.schema import RouteRule
from .testlib import ifacelib
from .testlib.env import is_k8s
REPORT_HEADER = """RPMs: {rpms}
@ -71,7 +72,8 @@ def _mark_tier2_tests(items):
def test_env_setup():
_logging_setup()
old_state = libnmstate.show()
_empty_net_state()
if not is_k8s():
_empty_net_state()
_ethx_init()
yield
libnmstate.apply(old_state, verify_change=False)

View File

@ -45,6 +45,7 @@ from .testlib import cmdlib
from .testlib import bondlib
from .testlib import ifacelib
from .testlib import statelib
from .testlib.env import is_k8s
from .testlib.ifacelib import get_mac_address
from .testlib.bridgelib import add_port_to_bridge
from .testlib.bridgelib import create_bridge_subtree_state
@ -270,6 +271,15 @@ def test_dhcp_with_addresses(dhcpcli_up):
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=AssertionError,
strict=False,
)
def test_ipv4_dhcp_on_bond(dhcpcli_up):
ipv4_state = {Interface.IPV4: _create_ipv4_state(enabled=True, dhcp=True)}
with bondlib.bond_interface(

View File

@ -29,8 +29,10 @@ from .testlib.examplelib import load_example
import libnmstate
from libnmstate import netinfo
from libnmstate.error import NmstateNotSupportedError
from libnmstate.error import NmstateTimeoutError
from libnmstate.schema import DNS
from .testlib.env import is_k8s
from .testlib.env import nm_major_minor_version
@ -52,6 +54,15 @@ def test_add_down_remove_vlan(eth1_up):
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=NmstateTimeoutError,
strict=False,
)
def test_add_remove_ovs_bridge(eth1_up):
with example_state(
"ovsbridge_create.yml", cleanup="ovsbridge_delete.yml"

View File

@ -21,12 +21,14 @@ import os
import pytest
import libnmstate
from libnmstate.error import NmstateLibnmError
from libnmstate.schema import Ieee8021X
from libnmstate.schema import Interface
from libnmstate.schema import InterfaceState
from ..testlib import cmdlib
from ..testlib import assertlib
from ..testlib.env import is_k8s
from ..testlib.veth import create_veth_pair
from ..testlib.veth import remove_veth_pair
@ -105,6 +107,15 @@ def _stop_802_1x_authenticator():
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=NmstateLibnmError,
strict=False,
)
def test_eth_with_802_1x(ieee_802_1x_env):
desire_state = {
Interface.KEY: [

View File

@ -23,6 +23,7 @@ import os
import pytest
import libnmstate
from libnmstate.error import NmstateValueError
from libnmstate.schema import Interface
from libnmstate.schema import InterfaceIPv4
from libnmstate.schema import InterfaceIPv6
@ -33,6 +34,7 @@ from libnmstate.schema import LinuxBridge
from ..testlib import assertlib
from ..testlib import cmdlib
from ..testlib import statelib
from ..testlib.env import is_k8s
from ..testlib.ovslib import Bridge as OvsBridge
@ -98,6 +100,15 @@ def test_delete_new_interface_inactive_profiles(dummy_inactive_profile):
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=AssertionError,
strict=False,
)
def test_delete_existing_interface_inactive_profiles(eth1_up):
with create_inactive_profile(eth1_up[Interface.KEY][0][Interface.NAME]):
eth1_up[Interface.KEY][0][Interface.MTU] = 2000
@ -399,6 +410,15 @@ def test_linux_bridge_with_port_holding_two_profiles(eth1_with_two_profiles):
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=NmstateValueError,
strict=False,
)
def test_converting_memory_only_profile_to_persistent():
with dummy_interface(DUMMY0_IFNAME, save_to_disk=False) as dstate:
libnmstate.apply(dstate, save_to_disk=True)

View File

@ -38,3 +38,7 @@ def is_ubuntu_kernel():
def nm_major_minor_version():
return float(f"{NM.MAJOR_VERSION}.{NM.MINOR_VERSION}")
def is_k8s():
return os.getenv("RUN_K8S") == "true"

View File

@ -31,6 +31,7 @@ from .testlib.bondlib import bond_interface
from .testlib.cmdlib import RC_SUCCESS
from .testlib.cmdlib import exec_cmd
from .testlib.cmdlib import format_exec_cmd_result
from .testlib.env import is_k8s
from .testlib.vxlan import VxlanState
from .testlib.vxlan import vxlan_interfaces
from .testlib.vxlan import vxlans_absent
@ -68,6 +69,15 @@ def test_add_and_remove_two_vxlans_on_same_iface(eth1_up):
@pytest.mark.tier1
@pytest.mark.xfail(
is_k8s(),
reason=(
"Requires adjusts for k8s. Ref:"
"https://github.com/nmstate/nmstate/issues/1579"
),
raises=AssertionError,
strict=False,
)
def test_rollback_for_vxlans(eth1_up):
ifname = eth1_up[Interface.KEY][0][Interface.NAME]
current_state = libnmstate.show()