summaryrefslogtreecommitdiff
path: root/tests/integration/ethernets.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/ethernets.py')
-rw-r--r--tests/integration/ethernets.py71
1 files changed, 66 insertions, 5 deletions
diff --git a/tests/integration/ethernets.py b/tests/integration/ethernets.py
index 865c0d4..8197a66 100644
--- a/tests/integration/ethernets.py
+++ b/tests/integration/ethernets.py
@@ -71,7 +71,7 @@ class _CommonTests():
englob:
match: {name: "eth?2"}
addresses: ["172.16.42.99/18", "1234:FFFF::42/64"]
-''' % {'r': self.backend}) # globbing match on "eth42", i.e. self.dev_e_client
+''' % {'r': self.backend}) # globbing match on "eth42", i.e. self.dev_e_client
self.generate_and_settle([self.dev_e_client])
self.assert_iface_up(self.dev_e_client, ['inet 172.16.42.99/18', 'inet6 1234:ffff::42/64'])
@@ -117,7 +117,7 @@ class _CommonTests():
self.assertRegex(out, r'%s\s+(ethernet|bridge)\s+%s' % (i, expected_state))
with open('/etc/resolv.conf') as f:
- resolv_conf = f.read()
+ resolv_conf = f.read()
if self.backend == 'NetworkManager' and nm_uses_dnsmasq:
sys.stdout.write('[NM with dnsmasq] ')
@@ -236,9 +236,69 @@ class _CommonTests():
self.assert_iface_up('iface1', ['inet 10.10.10.11'])
self.assert_iface_up('iface2', ['inet 10.10.10.22'])
+ def test_link_offloading(self):
+ self.setup_eth(None, False)
+ # check kernel defaults
+ out = subprocess.check_output(['ethtool', '-k', self.dev_e_client])
+ self.assertIn(b'rx-checksumming: on', out)
+ self.assertIn(b'tx-checksumming: on', out)
+ self.assertIn(b'tcp-segmentation-offload: on', out)
+ self.assertIn(b'tx-tcp6-segmentation: on', out)
+ self.assertIn(b'generic-segmentation-offload: on', out)
+ # enabled for armhf on autopkgtest.u.c but 'off' elsewhere
+ # self.assertIn(b'generic-receive-offload: off', out)
+ # validate turning off
+ with open(self.config, 'w') as f:
+ f.write('''network:
+ renderer: %(r)s
+ ethernets:
+ %(ec)s:
+ addresses: [10.10.10.22/24]
+ receive-checksum-offload: off
+ transmit-checksum-offload: off
+ tcp-segmentation-offload: off
+ tcp6-segmentation-offload: off
+ generic-segmentation-offload: off
+ generic-receive-offload: off
+ #large-receive-offload: off # not possible on veth
+''' % {'r': self.backend, 'ec': self.dev_e_client})
+ self.generate_and_settle([self.dev_e_client])
+ self.assert_iface_up(self.dev_e_client, ['inet 10.10.10.22'])
+ out = subprocess.check_output(['ethtool', '-k', self.dev_e_client])
+ self.assertIn(b'rx-checksumming: off', out)
+ self.assertIn(b'tx-checksumming: off', out)
+ self.assertIn(b'tcp-segmentation-offload: off', out)
+ self.assertIn(b'tx-tcp6-segmentation: off', out)
+ self.assertIn(b'generic-segmentation-offload: off', out)
+ self.assertIn(b'generic-receive-offload: off', out)
+ # validate turning on
+ with open(self.config, 'w') as f:
+ f.write('''network:
+ renderer: %(r)s
+ ethernets:
+ %(ec)s:
+ addresses: [10.10.10.22/24]
+ receive-checksum-offload: true
+ transmit-checksum-offload: true
+ tcp-segmentation-offload: true
+ tcp6-segmentation-offload: true
+ generic-segmentation-offload: true
+ generic-receive-offload: true
+ #large-receive-offload: true # not possible on veth
+''' % {'r': self.backend, 'ec': self.dev_e_client})
+ self.generate_and_settle([self.dev_e_client])
+ self.assert_iface_up(self.dev_e_client, ['inet 10.10.10.22'])
+ out = subprocess.check_output(['ethtool', '-k', self.dev_e_client])
+ self.assertIn(b'rx-checksumming: on', out)
+ self.assertIn(b'tx-checksumming: on', out)
+ self.assertIn(b'tcp-segmentation-offload: on', out)
+ self.assertIn(b'tx-tcp6-segmentation: on', out)
+ self.assertIn(b'generic-segmentation-offload: on', out)
+ self.assertIn(b'generic-receive-offload: on', out)
+
@unittest.skipIf("networkd" not in test_backends,
- "skipping as networkd backend tests are disabled")
+ "skipping as networkd backend tests are disabled")
class TestNetworkd(IntegrationTestsBase, _CommonTests):
backend = 'networkd'
@@ -253,7 +313,7 @@ class TestNetworkd(IntegrationTestsBase, _CommonTests):
dhcp6: no
accept-ra: yes
addresses: [ '192.168.1.100/24' ]''' % {'r': self.backend, 'ec': self.dev_e_client})
- self.generate_and_settle([self.dev_e_client])
+ self.generate_and_settle([self.state_dhcp6(self.dev_e_client)])
self.assert_iface_up(self.dev_e_client, ['inet6 2600:'], [])
def test_eth_dhcp6_off_no_accept_ra(self):
@@ -312,8 +372,9 @@ class TestNetworkd(IntegrationTestsBase, _CommonTests):
['inet6 9876:bbbb::11/70', 'inet 172.16.5.3/20'],
['inet6 fe80:', 'inet 169.254.'])
+
@unittest.skipIf("NetworkManager" not in test_backends,
- "skipping as NetworkManager backend tests are disabled")
+ "skipping as NetworkManager backend tests are disabled")
class TestNetworkManager(IntegrationTestsBase, _CommonTests):
backend = 'NetworkManager'