diff options
author | Daniil Baturin <daniil@vyos.io> | 2024-03-04 15:57:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-04 15:57:56 +0100 |
commit | 0eb1b68f9edd701a88f9466b84577806f79fe703 (patch) | |
tree | 5decc9c58254f64b26dbbee6bcce1d6fcb3f72cd /smoketest | |
parent | a841bb46cb651a04f45f0ad078c65f9d7df7f10a (diff) | |
parent | 09abfcbadc2ee664c674a4861d1d450de0be0c53 (diff) | |
download | vyos-1x-0eb1b68f9edd701a88f9466b84577806f79fe703.tar.gz vyos-1x-0eb1b68f9edd701a88f9466b84577806f79fe703.zip |
Merge pull request #3082 from vyos/mergify/bp/sagitta/pr-3077
vyos.ethtool: T6083: use JSON input data #2 (backport #3077)
Diffstat (limited to 'smoketest')
-rwxr-xr-x | smoketest/scripts/cli/test_interfaces_ethernet.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/smoketest/scripts/cli/test_interfaces_ethernet.py b/smoketest/scripts/cli/test_interfaces_ethernet.py index 9bf6a1a61..8f387b23d 100755 --- a/smoketest/scripts/cli/test_interfaces_ethernet.py +++ b/smoketest/scripts/cli/test_interfaces_ethernet.py @@ -31,6 +31,7 @@ from vyos.ifconfig import Section from vyos.pki import CERT_BEGIN from vyos.utils.process import cmd from vyos.utils.process import process_named_running +from vyos.utils.process import popen from vyos.utils.file import read_file from vyos.utils.network import is_ipv6_link_local @@ -304,6 +305,8 @@ class EthernetInterfaceTest(BasicInterfaceTest.TestCase): def test_ethtool_ring_buffer(self): for interface in self._interfaces: + # We do not use vyos.ethtool here to not have any chance + # for invalid testcases. Re-gain data by hand tmp = cmd(f'sudo ethtool --json --show-ring {interface}') tmp = loads(tmp) max_rx = str(tmp[0]['rx-max']) @@ -327,5 +330,29 @@ class EthernetInterfaceTest(BasicInterfaceTest.TestCase): self.assertEqual(max_rx, rx) self.assertEqual(max_tx, tx) + def test_ethtool_flow_control(self): + for interface in self._interfaces: + # Disable flow-control + self.cli_set(self._base_path + [interface, 'disable-flow-control']) + # Check current flow-control state on ethernet interface + out, err = popen(f'sudo ethtool --json --show-pause {interface}') + # Flow-control not supported - test if it bails out with a proper + # this is a dynamic path where err = 1 on VMware, but err = 0 on + # a physical box. + if bool(err): + with self.assertRaises(ConfigSessionError): + self.cli_commit() + else: + out = loads(out) + # Flow control is on + self.assertTrue(out[0]['autonegotiate']) + + # commit change on CLI to disable-flow-control and re-test + self.cli_commit() + + out, err = popen(f'sudo ethtool --json --show-pause {interface}') + out = loads(out) + self.assertFalse(out[0]['autonegotiate']) + if __name__ == '__main__': unittest.main(verbosity=2) |