in microsoft/testsuites/network/sriov.py [0:0]
def verify_sriov_interrupts_change(self, environment: Environment) -> None:
server_node = cast(RemoteNode, environment.nodes[0])
client_node = cast(RemoteNode, environment.nodes[1])
vm_nics = initialize_nic_info(environment)
# preparation work before launch iperf3
stop_firewall(environment)
server_iperf3 = server_node.tools[Iperf3]
client_iperf3 = client_node.tools[Iperf3]
# 1. Start iperf3 on server node.
server_iperf3.run_as_server()
client_interrupt_inspector = client_node.tools[InterruptInspector]
for _, client_nic_info in vm_nics[client_node.name].items():
# 2. Get initial interrupts sum per irq and cpu number on client node.
initial_pci_interrupts_by_irqs = (
client_interrupt_inspector.sum_cpu_counter_by_irqs(
client_nic_info.pci_slot
)
)
initial_pci_interrupts_by_cpus = (
client_interrupt_inspector.sum_cpu_counter_by_index(
client_nic_info.pci_slot
)
)
matched_server_nic_info: NicInfo
for _, server_nic_info in vm_nics[server_node.name].items():
if (
server_nic_info.ip_addr.rsplit(".", maxsplit=1)[0]
== client_nic_info.ip_addr.rsplit(".", maxsplit=1)[0]
):
matched_server_nic_info = server_nic_info
break
assert (
matched_server_nic_info
), "not found the server nic has the same subnet of"
f" {client_nic_info.ip_addr}"
# 3. Start iperf3 for 30 seconds with 128 threads on client node.
client_iperf3.run_as_client(
server_ip=matched_server_nic_info.ip_addr,
seconds=30,
parallel_number=128,
client_ip=client_nic_info.ip_addr,
)
# 4. Get final interrupts sum per irq number on client node.
final_pci_interrupts_by_irqs = (
client_interrupt_inspector.sum_cpu_counter_by_irqs(
client_nic_info.pci_slot
)
)
for init_interrupts_irq in initial_pci_interrupts_by_irqs:
init_irq_number = list(init_interrupts_irq)[0]
init_interrupts_value = init_interrupts_irq[init_irq_number]
for final_interrupts in final_pci_interrupts_by_irqs:
final_irq_number = list(final_interrupts)[0]
final_interrupts_value = final_interrupts[final_irq_number]
if init_irq_number == final_irq_number:
break
# 5. Compare interrupts changes, expected to see interrupts increased.
assert_that(final_interrupts_value).described_as(
f"irq {init_irq_number} didn't have an increased interrupts count"
" after iperf3 run!"
).is_greater_than(init_interrupts_value)
# 6. Get final interrupts sum per cpu on client node.
final_pci_interrupts_by_cpus = (
client_interrupt_inspector.sum_cpu_counter_by_index(
client_nic_info.pci_slot
)
)
for cpu, init_interrupts_value in initial_pci_interrupts_by_cpus.items():
final_interrupts_value = final_pci_interrupts_by_cpus[cpu]
# 7. Compare interrupts changes, expected to see interrupts increased.
assert_that(final_interrupts_value).described_as(
f"CPU {cpu} didn't have an increased interrupts count"
" after iperf3 run!"
).is_greater_than(init_interrupts_value)