blob: 94228bdc9860b5d4f21a7f05cd5c7215ebeca2f0 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright (c) 2023 Nordic Semiconductor
# SPDX-License-Identifier: Apache-2.0
simulation_id="conn_stress"
process_ids=""; exit_code=0
# We don't use the `Execute` fn from `bsim/sh_common.source` as
# `wait_for_background_jobs` will terminate the script if there's an error, and
# this test will fail often. We still want to run the packet conversion scripts,
# especially if the test was not successful.
function Execute(){
if [ ! -f $1 ]; then
echo -e "ERR! \e[91m`pwd`/`basename $1` cannot be found (did you forget to\
compile it?)\e[39m"
exit 1
fi
timeout 60 $@ & process_ids="$process_ids $!"
echo "Running $@"
}
: "${BSIM_OUT_PATH:?BSIM_OUT_PATH must be defined}"
#Give a default value to BOARD if it does not have one yet:
BOARD="${BOARD:-nrf52_bsim}"
test_path="bsim_bluetooth_host_misc_conn_stress"
bsim_central_exe_name="bs_nrf52_${test_path}_central_prj_conf"
bsim_peripheral_exe_name="bs_nrf52_${test_path}_peripheral_prj_conf"
# terminate running simulations (if any)
${BSIM_COMPONENTS_PATH}/common/stop_bsim.sh
# (re)Build the central & peripheral images. Don't continue if build fails.
west build -b ${BOARD} -d build_central central && \
cp build_central/zephyr/zephyr.exe \
"${BSIM_OUT_PATH}/bin/${bsim_central_exe_name}" \
|| exit
west build -b ${BOARD} -d build_peripheral peripheral && \
cp build_peripheral/zephyr/zephyr.exe \
"${BSIM_OUT_PATH}/bin/${bsim_peripheral_exe_name}" \
|| exit
cd ${BSIM_OUT_PATH}/bin
bsim_args="-RealEncryption=1 -v=2 -s=${simulation_id}"
test_args="-argstest notify_size=220 conn_interval=32"
nr_of_units=12
for device in `seq 1 $nr_of_units`; do
let rs=$device*100
Execute "./${bsim_peripheral_exe_name}" ${bsim_args} \
-d=$device -rs=$rs -testid=peripheral ${test_args}
done
Execute ./bs_2G4_phy_v1 -dump -v=2 -s=${simulation_id} -D=13 -sim_length=1000e6 &
Execute "./${bsim_central_exe_name}" ${bsim_args} -d=0 -rs=001 -testid=central ${test_args}
for process_id in $process_ids; do
wait $process_id || let "exit_code=$?"
done
for i in `seq -w 0 $nr_of_units`; do
${BSIM_OUT_PATH}/components/ext_2G4_phy_v1/dump_post_process/csv2pcap -o \
${BSIM_OUT_PATH}/results/${simulation_id}/Trace_$i.pcap \
${BSIM_OUT_PATH}/results/${simulation_id}/d_2G4_$i.Tx.csv
${BSIM_OUT_PATH}/components/ext_2G4_phy_v1/dump_post_process/csv2pcap -o \
${BSIM_OUT_PATH}/results/${simulation_id}/Trace_Rx_$i.pcap \
${BSIM_OUT_PATH}/results/${simulation_id}/d_2G4_$i.Rx.csv
echo "${BSIM_OUT_PATH}/results/${simulation_id}/Trace_$i.pcap"
echo "${BSIM_OUT_PATH}/results/${simulation_id}/Trace_Rx_$i.pcap"
done
exit $exit_code