+| Measure and show latency at specified rate
+| | [Documentation]
+| | ... | Send traffic at specified rate, single trial.
+| | ... | Extract latency information and append it to text message.
+| | ... | The rate argument should be TRex friendly, so it should include "pps".
+| |
+| | ... | *Arguments:*
+| | ... | - message_prefix - Preface to test message addition. Type: string
+| | ... | - trial_duration - Duration of single trial [s]. Type: float
+| | ... | - rate - Rate for sending packets. Type: string
+| | ... | - frame_size - L2 Frame Size [B]. Type: integer/string
+| | ... | - traffic_profile - Name of module defining traffic for measurements.
+| | ... | Type: string
+| | ... | - traffic_directions - Bi- (2) or uni- (1) directional traffic.
+| | ... | Type: int
+| | ... | - tx_port - TX port of TG, default 0. Type: integer
+| | ... | - rx_port - RX port of TG, default 1. Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Measure and show latency at specified rate \| Latency at 90% NDR \
+| | ... | \| \${1.0} \| 4.0mpps \| \${64} \| 3-node-IPv4 \| \${2} \|
+| |
+| | [Arguments] | ${message_prefix} | ${trial_duration} | ${rate}
+| | ... | ${frame_size} | ${traffic_profile} | ${traffic_directions}=${2}
+| | ... | ${tx_port}=${0} | ${rx_port}=${1}
+| |
+| | # 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}
+| | ... | traffic_directions=${traffic_directions} | tx_port=${tx_port}
+| | ... | rx_port=${rx_port}
+| | ${latency} = | Get Latency Int
+| | Set Test Message | ${\n}${message_prefix} ${latency} | append=${True}
+