# SPDX-License-Identifier: BSD-3-Clause --- - hosts: all vars: interface: lsrfeat1 type: veth tasks: - name: "INIT: Ethtool feeatures tests" debug: msg: "##################################################" - include_tasks: tasks/show-interfaces.yml - include_tasks: tasks/manage-test-interface.yml vars: state: present - include_tasks: tasks/assert-device_present.yml - name: Install ethtool (test dependency) package: name: ethtool state: present - block: - name: "TEST: I can create a profile without changing the ethtool features." debug: msg: "##################################################" - name: Get current device features command: "ethtool --show-features {{ interface }}" register: original_ethtool_features - import_role: name: linux-system-roles.network vars: network_connections: - name: "{{ interface }}" state: up type: ethernet ip: dhcp4: "no" auto6: "no" - name: Get current device features command: "ethtool --show-features {{ interface }}" register: ethtool_features - name: "ASSERT: The profile does not change the ethtool features" assert: that: - original_ethtool_features.stdout == ethtool_features.stdout - name: "TEST: I can disable gro and tx-tcp-segmentation and enable gso." debug: msg: "##################################################" - import_role: name: linux-system-roles.network vars: network_connections: - name: "{{ interface }}" state: up type: ethernet ip: dhcp4: "no" auto6: "no" ethtool: features: gro: "no" gso: "yes" tx-tcp-segmentation: "no" - name: Get current device features command: "ethtool --show-features {{ interface }}" register: ethtool_features - name: debug: var: ethtool_features.stdout_lines - name: Assert device features assert: that: - "'generic-receive-offload: off' in ethtool_features.stdout_lines" - "'generic-segmentation-offload: on' in ethtool_features.stdout_lines" - "'tx-tcp-segmentation: off' in ethtool_features.stdout_lines | map('trim')" - name: "TEST: I can reset features to their original value." debug: msg: "##################################################" - import_role: name: linux-system-roles.network vars: network_connections: - name: "{{ interface }}" state: up type: ethernet ip: dhcp4: "no" auto6: "no" - name: Get current device features command: "ethtool --show-features {{ interface }}" register: ethtool_features # Resetting the ethtools only works with NetworkManager - name: "ASSERT: The profile does not change the ethtool features" assert: that: - original_ethtool_features.stdout == ethtool_features.stdout when: network_provider == 'nm' always: - block: - import_role: name: linux-system-roles.network vars: network_connections: - name: "{{ interface }}" persistent_state: absent state: down ignore_errors: true - include_tasks: tasks/manage-test-interface.yml vars: state: absent tags: - "tests::cleanup"