Skip to content

Commit

Permalink
dts: test suites docstring update
Browse files Browse the repository at this point in the history
Format according to the Google format and PEP257, with slight
deviations.

Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
Signed-off-by: 0-day Robot <robot@bytheb.org>
  • Loading branch information
jlinkes authored and ovsrobot committed Nov 23, 2023
1 parent 8a63cbf commit ee69f40
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 25 deletions.
16 changes: 10 additions & 6 deletions dts/tests/TestSuite_hello_world.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2010-2014 Intel Corporation

"""
"""The DPDK hello world app test suite.
Run the helloworld example app and verify it prints a message for each used core.
No other EAL parameters apart from cores are used.
"""
Expand All @@ -15,22 +16,25 @@


class TestHelloWorld(TestSuite):
"""DPDK hello world app test suite."""

def set_up_suite(self) -> None:
"""
"""Set up the test suite.
Setup:
Build the app we're about to test - helloworld.
"""
self.app_helloworld_path = self.sut_node.build_dpdk_app("helloworld")

def test_hello_world_single_core(self) -> None:
"""
"""Single core test case.
Steps:
Run the helloworld app on the first usable logical core.
Verify:
The app prints a message from the used core:
"hello from core <core_id>"
"""

# get the first usable core
lcore_amount = LogicalCoreCount(1, 1, 1)
lcores = LogicalCoreCountFilter(self.sut_node.lcores, lcore_amount).filter()
Expand All @@ -42,14 +46,14 @@ def test_hello_world_single_core(self) -> None:
)

def test_hello_world_all_cores(self) -> None:
"""
"""All cores test case.
Steps:
Run the helloworld app on all usable logical cores.
Verify:
The app prints a message from all used cores:
"hello from core <core_id>"
"""

# get the maximum logical core number
eal_para = self.sut_node.create_eal_parameters(
lcore_filter_specifier=LogicalCoreList(self.sut_node.lcores)
Expand Down
20 changes: 12 additions & 8 deletions dts/tests/TestSuite_os_udp.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2023 PANTHEON.tech s.r.o.

"""
"""Basic IPv4 OS routing test suite.
Configure SUT node to route traffic from if1 to if2.
Send a packet to the SUT node, verify it comes back on the second port on the TG node.
"""
Expand All @@ -13,24 +14,26 @@


class TestOSUdp(TestSuite):
"""IPv4 UDP OS routing test suite."""

def set_up_suite(self) -> None:
"""
"""Set up the test suite.
Setup:
Configure SUT ports and SUT to route traffic from if1 to if2.
Bind the SUT ports to the OS driver, configure the ports and configure the SUT
to route traffic from if1 to if2.
"""

# This test uses kernel drivers
self.sut_node.bind_ports_to_driver(for_dpdk=False)
self.configure_testbed_ipv4()

def test_os_udp(self) -> None:
"""
"""Basic UDP IPv4 traffic test case.
Steps:
Send a UDP packet.
Verify:
The packet with proper addresses arrives at the other TG port.
"""

packet = Ether() / IP() / UDP()

received_packets = self.send_packet_and_capture(packet)
Expand All @@ -40,7 +43,8 @@ def test_os_udp(self) -> None:
self.verify_packets(expected_packet, received_packets)

def tear_down_suite(self) -> None:
"""
"""Tear down the test suite.
Teardown:
Remove the SUT port configuration configured in setup.
"""
Expand Down
61 changes: 50 additions & 11 deletions dts/tests/TestSuite_smoke_tests.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2023 University of New Hampshire

"""Smoke test suite.
Smoke tests are a class of tests which are used for validating a minimal set of important features.
These are the most important features without which (or when they're faulty) the software wouldn't
work properly. Thus, if any failure occurs while testing these features,
there isn't that much of a reason to continue testing, as the software is fundamentally broken.
These tests don't have to include only DPDK tests, as the reason for failures could be
in the infrastructure (a faulty link between NICs or a misconfiguration).
"""

import re

from framework.config import PortConfig
Expand All @@ -11,23 +22,39 @@


class SmokeTests(TestSuite):
"""DPDK and infrastructure smoke test suite.
The test cases validate the most basic DPDK functionality needed for all other test suites.
The infrastructure also needs to be tested, as that is also used by all other test suites.
Attributes:
is_blocking: This test suite will block the execution of all other test suites
in the build target after it.
nics_in_node: The NICs present on the SUT node.
"""

is_blocking = True
# dicts in this list are expected to have two keys:
# "pci_address" and "current_driver"
nics_in_node: list[PortConfig] = []

def set_up_suite(self) -> None:
"""
"""Set up the test suite.
Setup:
Set the build directory path and generate a list of NICs in the SUT node.
Set the build directory path and a list of NICs in the SUT node.
"""
self.dpdk_build_dir_path = self.sut_node.remote_dpdk_build_dir
self.nics_in_node = self.sut_node.config.ports

def test_unit_tests(self) -> None:
"""
"""DPDK meson ``fast-tests`` unit tests.
Test that all unit test from the ``fast-tests`` suite pass.
The suite is a subset with only the most basic tests.
Test:
Run the fast-test unit-test suite through meson.
Run the ``fast-tests`` unit test suite through meson.
"""
self.sut_node.main_session.send_command(
f"meson test -C {self.dpdk_build_dir_path} --suite fast-tests -t 60",
Expand All @@ -37,9 +64,14 @@ def test_unit_tests(self) -> None:
)

def test_driver_tests(self) -> None:
"""
"""DPDK meson ``driver-tests`` unit tests.
Test that all unit test from the ``driver-tests`` suite pass.
The suite is a subset with driver tests. This suite may be run with virtual devices
configured in the test run configuration.
Test:
Run the driver-test unit-test suite through meson.
Run the ``driver-tests`` unit test suite through meson.
"""
vdev_args = ""
for dev in self.sut_node.virtual_devices:
Expand All @@ -60,9 +92,12 @@ def test_driver_tests(self) -> None:
)

def test_devices_listed_in_testpmd(self) -> None:
"""
"""Testpmd device discovery.
Test that the devices configured in the test run configuration are found in testpmd.
Test:
Uses testpmd driver to verify that devices have been found by testpmd.
List all devices found in testpmd and verify the configured devices are among them.
"""
testpmd_driver = self.sut_node.create_interactive_shell(TestPmdShell, privileged=True)
dev_list = [str(x) for x in testpmd_driver.get_devices()]
Expand All @@ -74,10 +109,14 @@ def test_devices_listed_in_testpmd(self) -> None:
)

def test_device_bound_to_driver(self) -> None:
"""
"""Device driver in OS.
Test that the devices configured in the test run configuration are bound to
the proper driver.
Test:
Ensure that all drivers listed in the config are bound to the correct
driver.
List all devices with the ``dpdk-devbind.py`` script and verify that
the configured devices are bound to the proper driver.
"""
path_to_devbind = self.sut_node.path_to_devbind_script

Expand Down

0 comments on commit ee69f40

Please sign in to comment.