Skip to content
Merged
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
3300354
Initial plan
Copilot Oct 20, 2025
1740192
Add unified message support for iperf3 TCP and UDP performance metrics
Copilot Oct 20, 2025
e7301ab
Refactor unified message methods to use parsed fields and add connect…
Copilot Oct 21, 2025
bd6a0df
Merge remote-tracking branch 'origin/main' into copilot/add-unified-m…
Copilot Oct 21, 2025
63ec2d5
Merge main and use Parameter relativity for connections_num and buffe…
Copilot Oct 21, 2025
404493e
Remove conn_suffix from metric names
Copilot Oct 21, 2025
95443fb
Revert "Move examples and microsoft directories into the Python packa…
LiliDeng Oct 21, 2025
f44e009
Reapply "Move examples and microsoft directories into the Python pack…
squirrelsc Oct 21, 2025
3a51ff4
runbook: fix path for legacy layout
squirrelsc Oct 21, 2025
58d2b69
Add UnifiedMessage support for NetworkLatencyPerformanceMessage
Copilot Oct 20, 2025
c755cc0
kdump: Replace CvmDisabled with before_case SecurityProfile check (#4…
vyadavmsft Oct 22, 2025
38297f2
Add detailed panic categorization and error code extraction
vyadavmsft Oct 11, 2025
eef3d31
enrich SerialConsole.check_panic() to return detailed panic
vyadavmsft Oct 13, 2025
1f713eb
Added tests for network related components (#4009)
Balashivaram Oct 22, 2025
ae7233d
notifier: remove pytest-html dependency
squirrelsc Oct 22, 2025
6df7937
runbook: fix microsoft package name for new paths.
squirrelsc Oct 23, 2025
01ff55b
Remove watchdog pattern from serial console panic detection (#4075)
Copilot Oct 28, 2025
5b8730e
fix verify_cpu_count and improve PowerShell
squirrelsc Oct 27, 2025
f839b0b
iDRAC: Handle HTTP 500 internal errors with service reset
vyadavmsft Oct 23, 2025
1e9b96c
Fix Hyper-V Stop-VM to use TurnOff on timeout/failure
vyadavmsft Oct 22, 2025
9aab9e8
Remove overly broad stall regex pattern causing false positive panic …
Copilot Oct 30, 2025
8b29d0b
Revert "skip test if hv_netvsc driver is not used"
LiliDeng Oct 30, 2025
e850fe6
change kselftest required /tmp/ size to 1GB for Overlake SoC limited …
paxue Oct 30, 2025
c0a8148
Add enabled switch for environments and nodes
squirrelsc Oct 25, 2025
4b2928d
Process: Raise exception on timeout. (#4077)
squirrelsc Nov 3, 2025
82685fb
Skip tests on L1VH Nodes (#4078)
praveen-pk Nov 3, 2025
fa6d405
Set minimum TLS setting 1.2 for storage accounts
s4heid Nov 3, 2025
914d628
Fix IPTable Test (#4088)
Balashivaram Nov 4, 2025
e527908
Add virtualization feature
LiliDeng Oct 30, 2025
7de2b2d
doc: fix doc path after test code moved.
squirrelsc Nov 5, 2025
324c57f
doc: fix some build warnings.
squirrelsc Nov 6, 2025
f3647ed
doc: allow duplicate test case names in different test suites.
squirrelsc Nov 6, 2025
9023784
Fix VHD schema documentation to show nested hyperv_generation field (…
Copilot Nov 7, 2025
2fefa83
changes to install xxhash tool before building kernel
umfranci Nov 6, 2025
333639c
Modrpobe command update for verbose is false
rabdulfaizy Nov 7, 2025
b4d722d
Document resource_group_tags parameter for Azure runbook (#4101)
Copilot Nov 10, 2025
2de490a
Add Host version tracking for baremetal and HyperV platforms
vyadavmsft Oct 31, 2025
37c98b3
Convert GPU Driver installation to Tool, Add amd-smi (#4080)
adityagesh Nov 11, 2025
2eb6d35
ch perf: Implement comprehensive performance stabilization framework
vyadavmsft Oct 19, 2025
97bb475
Classify /bin/true redirections in kernel modules as not loaded
s4heid Nov 10, 2025
7782438
Kdump: Enhnace error log for incomplete dump file
adityagesh Nov 10, 2025
d50f4bc
Update Nested Feature Supported list in Azure
adityagesh Nov 10, 2025
add7955
Create dm-cache test (#4093)
rlmenge Nov 11, 2025
0ce3a3a
Fix nvme device path fetch logic
kanchansenlaskar Oct 25, 2025
84b9ecd
DPDK: add netvsc rescind tests (#4076)
mcgov Nov 12, 2025
67dc239
Remove squirrelsc from CODEOWNERS file
Copilot Nov 12, 2025
856ba28
UnifiedPerfMessage: add metric_str_value to store string value (#4107)
LiliDeng Nov 13, 2025
fca098d
Pass through MIGRATABLE_VERSION from pipeline environment
vyadavmsft Oct 27, 2025
6e2d398
Add UnifiedMessage support for NetworkPPSPerformanceMessage (#4057)
Copilot Nov 14, 2025
0b59886
Initial plan
Copilot Oct 20, 2025
9ce0e31
Rebase on latest main branch
Copilot Nov 14, 2025
1e1232e
Initial plan
Copilot Oct 20, 2025
178357d
Initial plan
Copilot Oct 20, 2025
f7de364
Rebase on latest main branch
Copilot Nov 14, 2025
2f8c9a1
Sync latest code from main branch
Copilot Nov 14, 2025
6430355
Clean commit history - single commit for PR changes
Copilot Nov 17, 2025
52ad7f5
Merge branch 'main' of https://github.com/microsoft/lisa into copilot…
Copilot Nov 17, 2025
6ddb8bf
Add connections_num and buffer_size to metric names as suffix
Copilot Nov 18, 2025
b2d9449
Fix flake8 errors: remove trailing whitespace from blank lines
Copilot Nov 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions lisa/tools/iperf3.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@

from lisa.executable import Tool
from lisa.messages import (
MetricRelativity,
NetworkTCPPerformanceMessage,
NetworkUDPPerformanceMessage,
TransportProtocol,
create_perf_message,
send_unified_perf_message,
)
from lisa.operating_system import Posix
from lisa.tools import Cat
Expand Down Expand Up @@ -344,6 +347,15 @@ def create_iperf_tcp_performance_message(
other_fields["retransmitted_segments"] = client_stream["sender"][
"retransmits"
]

# Send unified performance messages
self.send_iperf3_tcp_unified_perf_messages(
other_fields,
connections_num,
test_case_name,
test_result,
)

return create_perf_message(
NetworkTCPPerformanceMessage,
self.node,
Expand Down Expand Up @@ -427,6 +439,15 @@ def create_iperf_udp_performance_message(
)
other_fields["send_buffer_size"] = Decimal(buffer_length)
other_fields["connections_num"] = connections_num

# Send unified performance messages
self.send_iperf3_udp_unified_perf_messages(
other_fields,
connections_num,
test_case_name,
test_result,
)

return create_perf_message(
NetworkUDPPerformanceMessage,
self.node,
Expand All @@ -435,6 +456,107 @@ def create_iperf_udp_performance_message(
other_fields,
)

def _send_unified_perf_metrics(
self,
metrics: List[Dict[str, Any]],
test_case_name: str,
test_result: "TestResult",
protocol_type: str,
) -> None:
"""Helper method to send unified performance metrics."""
tool = constants.NETWORK_PERFORMANCE_TOOL_IPERF

for metric in metrics:
send_unified_perf_message(
node=self.node,
test_result=test_result,
test_case_name=test_case_name,
tool=tool,
metric_name=metric["name"],
metric_value=metric["value"],
metric_unit=metric.get("unit", ""),
metric_relativity=metric["relativity"],
protocol_type=protocol_type,
)

def send_iperf3_tcp_unified_perf_messages(
self,
other_fields: Dict[str, Any],
connections_num: int,
test_case_name: str,
test_result: "TestResult",
) -> None:
"""Send unified performance messages for TCP iperf3 metrics."""
buffer_size = int(other_fields["buffer_size_bytes"])
suffix = f"_conn_{connections_num}_buffer_{buffer_size}"

metrics = [
{
"name": f"rx_throughput_in_gbps{suffix}",
"value": float(other_fields["rx_throughput_in_gbps"]),
"relativity": MetricRelativity.HigherIsBetter,
"unit": "Gbps",
},
{
"name": f"tx_throughput_in_gbps{suffix}",
"value": float(other_fields["tx_throughput_in_gbps"]),
"relativity": MetricRelativity.HigherIsBetter,
"unit": "Gbps",
},
{
"name": f"congestion_windowsize_kb{suffix}",
"value": float(other_fields["congestion_windowsize_kb"]),
"relativity": MetricRelativity.HigherIsBetter,
"unit": "KB",
},
{
"name": f"retransmitted_segments{suffix}",
"value": float(other_fields["retransmitted_segments"]),
"relativity": MetricRelativity.LowerIsBetter,
"unit": "",
},
]

self._send_unified_perf_metrics(
metrics, test_case_name, test_result, TransportProtocol.Tcp
)

def send_iperf3_udp_unified_perf_messages(
self,
other_fields: Dict[str, Any],
connections_num: int,
test_case_name: str,
test_result: "TestResult",
) -> None:
"""Send unified performance messages for UDP iperf3 metrics."""
buffer_size = int(other_fields["send_buffer_size"])
suffix = f"_conn_{connections_num}_buffer_{buffer_size}"

metrics = [
{
"name": f"tx_throughput_in_gbps{suffix}",
"value": float(other_fields["tx_throughput_in_gbps"]),
"relativity": MetricRelativity.HigherIsBetter,
"unit": "Gbps",
},
{
"name": f"rx_throughput_in_gbps{suffix}",
"value": float(other_fields["rx_throughput_in_gbps"]),
"relativity": MetricRelativity.HigherIsBetter,
"unit": "Gbps",
},
{
"name": f"data_loss{suffix}",
"value": float(other_fields["data_loss"]),
"relativity": MetricRelativity.LowerIsBetter,
"unit": "%",
},
]

self._send_unified_perf_metrics(
metrics, test_case_name, test_result, TransportProtocol.Udp
)

def get_sender_bandwidth(self, result: str) -> Decimal:
return self._get_bandwidth(result, self._sender_pattern)

Expand Down
Loading