-| | ... | ${topology_type} | ${minimum_transmit_rate*2}
-| | ... | ${maximum_transmit_rate*2} | ${packet_loss_ratio}
-| | ... | ${final_relative_width} | ${final_trial_duration}
-| | ... | ${initial_trial_duration} | ${number_of_intermediate_phases}
-| | ... | timeout=${timeout} | doublings=${doublings}
-| | Display result of NDRPDR search | ${result} | ${frame_size}
-| | Check NDRPDR interval validity | ${result.pdr_interval}
-| | ... | ${packet_loss_ratio}
-| | Check NDRPDR interval validity | ${result.ndr_interval}
-| | Perform additional measurements based on NDRPDR result
-| | ... | ${result} | ${frame_size} | ${topology_type}
+| | ... | ${traffic_profile} | ${20000} | ${max_rate*2}
+| | ... | ${packet_loss_ratio} | ${final_relative_width}
+| | ... | ${final_trial_duration} | ${initial_trial_duration}
+| | ... | ${number_of_intermediate_phases} | timeout=${timeout}
+| | ... | doublings=${doublings}
+| | Return From Keyword | ${result.pdr_interval.measured_low.transmit_rate}
+
+| Find critical load using PLRsearch
+| | [Documentation]
+| | ... | Find boundaries for troughput (of given target loss ratio)
+| | ... | using PLRsearch algorithm.
+| | ... | Display results as formatted test message.
+| | ... | Fail if computed lower bound is below minimal rate.
+| | ... | Input rates are understood as uni-directional,
+| | ... | reported result contains bi-directional rates.
+| | ... | Currently, the min_rate value is hardcoded to match test teardowns.
+| | ... | Some inputs are read from variables to streamline suites.
+| | ...
+| | ... | *Test (or broader scope) variables read:*
+| | ... | - traffic_profile - Name of module defining traffc for measurements.
+| | ... | Type: string
+| | ... | - frame_size - L2 Frame Size [B] or IMIX string. Type: int or str
+| | ... | - max_rate - Calculated unidirectional maximal transmit rate [pps].
+| | ... | Type: float
+| | ...
+| | ... | *Arguments:*
+| | ... | - packet_loss_ratio - Accepted loss during search. Type: float
+| | ... | - timeout - Stop when search duration is longer [s]. Type: float
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Find critical load using PLR search \| \${1e-7} \| \${120} \|
+| | ...
+| | [Arguments] | ${packet_loss_ratio}=${1e-7} | ${timeout}=${1800.0}
+| | ...
+| | ${min_rate} = | Set Variable | ${20000}
+| | ${average} | ${stdev} = | Perform soak search | ${frame_size}
+| | ... | ${traffic_profile} | ${min_rate} | ${max_rate*2}
+| | ... | ${packet_loss_ratio} | timeout=${timeout}
+| | ${lower} | ${upper} = | Display result of soak search
+| | ... | ${average} | ${stdev}
+| | Should Not Be True | ${lower} < ${min_rate}
+| | ... | Lower bound ${lower} is below bidirectional minimum ${min_rate}.