-| | Clear and show runtime counters with running traffic | ${duration}
-| | ... | ${rate} | ${framesize} | ${topology_type}
-| | ${ret}= | Is DPDK performance test
-| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs
-| | Send traffic on tg | ${duration} | ${rate} | ${framesize}
-| | ... | ${topology_type} | warmup_time=0
-| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs | ${nodes}
-| | Run Keyword If | ${fail_on_loss} | Partial traffic loss accepted
-| | ... | ${loss_acceptance} | ${loss_acceptance_type}
+| | ... | \| Send traffic at specified rate \| ${1.0} \| 4.0mpps \| 64 \
+| | ... | \| 3-node-IPv4 \| ${10} \| ${False} \| ${0} | ${1} \| ${False}
+| | ...
+| | [Arguments] | ${trial_duration} | ${rate} | ${frame_size}
+| | ... | ${traffic_profile} | ${subsamples}=${1} | ${unidirection}=${False}
+| | ... | ${tx_port}=${0} | ${rx_port}=${1} | ${pkt_trace}=${False}
+| | ...
+| | Clear and show runtime counters with running traffic | ${trial_duration}
+| | ... | ${rate} | ${frame_size} | ${traffic_profile}
+| | ... | ${unidirection} | ${tx_port} | ${rx_port}
+| | Run Keyword If | ${dut_stats}==${True} | Clear all counters on all DUTs
+| | Run Keyword If | ${dut_stats}==${True} and ${pkt_trace}==${True}
+| | ... | VPP Enable Traces On All DUTs | ${nodes} | fail_on_error=${False}
+| | Run Keyword If | ${dut_stats}==${True}
+| | ... | VPP enable elog traces on all DUTs | ${nodes}
+| | ${results} = | Create List
+| | :FOR | ${i} | IN RANGE | ${subsamples}
+| | | # The following line is skipping some default arguments,
+| | | # that is why subsequent arguments have to be named.
+| | | Send traffic on tg | ${trial_duration} | ${rate} | ${frame_size}
+| | | ... | ${traffic_profile} | warmup_time=${0} | unidirection=${unidirection}
+| | | ... | tx_port=${tx_port} | rx_port=${rx_port}
+| | | ${rx} = | Get Received
+| | | ${rr} = | Evaluate | ${rx} / ${trial_duration}
+| | | Append To List | ${results} | ${rr}
+| | Run Keyword If | ${dut_stats}==${True} | Show event logger on all DUTs
+| | ... | ${nodes}
+| | Run Keyword If | ${dut_stats}==${True} | Show statistics on all DUTs
+| | ... | ${nodes}
+| | Run Keyword If | ${dut_stats}==${True} and ${pkt_trace}==${True}
+| | ... | Show Packet Trace On All Duts | ${nodes} | maximum=${100}
+| | Return From Keyword | ${results}