run_lte: adding stricter checks for pass/fail

* enable all layer logs in info
* check that no component ever logs an error/warning
* check that all PHY UL and DL transmissions are always crc=OK
* check PHICH, PUCCH, cqi
master
Andre Puschmann 5 years ago
parent 396dc82b98
commit 6a71e83d70

@ -79,6 +79,156 @@ valid_num_prb()
esac esac
} }
check_ping()
{
loss_rate=$(cat ./${nof_prb}prb_screenlog_ping_ul.log | grep -oP '\d+(?=% packet loss)')
if [ "$loss_rate" != "0" ] 2>/dev/null; then
echo "Error. Detected $loss_rate per-cent loss rate in UL ping."
exit 1
fi
loss_rate=$(cat ./${nof_prb}prb_screenlog_ping_dl.log | grep -oP '\d+(?=% packet loss)')
if [ "$loss_rate" != "0" ] 2>/dev/null; then
echo "Error. Detected $loss_rate per-cent loss rate in DL ping."
exit 1
fi
}
check_ue()
{
# check that all log files have "Closing log" as last line
last_line=$(cat ./${nof_prb}prb_ue.log | tail -n1)
if [ "$last_line" != "Closing log" ]; then
echo "Error. srsUE didn't seem to have exited properly."
exit 1
fi
# Check UE logs don't contain Error from any layer
num_error=$(cat ./${nof_prb}prb_ue.log | grep "\[E\]" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error error messages in UE logs. We should finish without any error."
exit 1
fi
# Check UE logs don't contain Warning from any layer
num_warning=$(cat ./${nof_prb}prb_ue.log | grep "\[W\]" | wc -l)
if [ "$num_warning" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_warning warning messages in UE logs. We should finish without any."
exit 1
fi
# Check PDSCH
num_error=$(cat ./${nof_prb}prb_ue.log | grep "KO" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error PDSCH errors in UE logs. We should finish without any error."
exit 1
fi
# Check PUCCH ack
num_error=$(cat ./${nof_prb}prb_ue.log | grep "PUCCH" | grep "ack=0" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error PUCCH errors in UE logs. We should finish without any error."
exit 1
fi
# Check PHICH
num_error=$(cat ./${nof_prb}prb_ue.log | grep "hi=0" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error PHICH errors in UE logs. We should finish without any error."
exit 1
fi
# Check CQI is 15
num_error=$(cat ./${nof_prb}prb_ue.log | grep "PUCCH" | grep "cqi=" | grep -v "cqi=15" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error CQI != 15 in UE logs. We should finish with all qci=15."
exit 1
fi
# Check number of PRACHs
num_prach=$(cat ./${nof_prb}prb_ue.log | grep "preamble=" | wc -l)
if [ "$num_prach" != "1" ] 2>/dev/null; then
echo "Error. Detected $num_prach PRACH(s). But should be only 1."
exit 1
fi
# Check duplicate TB at MAC
num_error=$(cat ./${nof_prb}prb_ue.log | grep "duplicate" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error duplicate TBs in UE logs. We should finish without any duplicate."
exit 1
fi
}
check_enb()
{
# check that all log files have "Closing log" as last line
last_line=$(cat ./${nof_prb}prb_enb.log | tail -n1)
if [ "$last_line" != "Closing log" ]; then
echo "Error. srsENB didn't seem to have exited properly."
exit 1
fi
# Check PRACH results
num_prach=$(cat ./${nof_prb}prb_screenlog_srsenb.log | grep RACH: | wc -l)
if [ "$num_prach" != "1" ] 2>/dev/null; then
echo "Error. Detected $num_prach PRACH(s). But should be only 1."
exit 1
fi
# check [E]
num_error=$(cat ./${nof_prb}prb_enb.log | grep "\[E\]" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error error messages in eNB logs. We should finish without any error."
exit 1
fi
# Check [W]
num_warning=$(cat ./${nof_prb}prb_enb.log | grep "\[W\]" | wc -l)
if [ "$num_warning" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_warning warning messages in eNB logs. We should finish without any."
exit 1
fi
# Check for PUSCH errors
num_error=$(cat ./${nof_prb}prb_enb.log | grep "KO" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error PUSCH errors in eNB logs. We should finish without any error."
exit 1
fi
# Check PUCCH ack
num_error=$(cat ./${nof_prb}prb_enb.log | grep "PUCCH" | grep "ack=0" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error PUCCH errors in eNB logs. We should finish without any error."
exit 1
fi
# Check CQI is 15
num_error=$(cat ./${nof_prb}prb_enb.log | grep "PUCCH" | grep "cqi=" | grep -v "cqi=15" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error CQI != 15 in eNB logs. We should finish with all qci=15."
exit 1
fi
}
check_epc()
{
# check that log has "Closing log" as last line
last_line=$(cat ./${nof_prb}prb_epc.log | tail -n1)
if [ "$last_line" != "Closing log" ]; then
echo "Error. srsEPC didn't seem to have exited properly."
exit 1
fi
# check [E]
num_error=$(cat ./${nof_prb}prb_epc.log | grep "\[E\]" | wc -l)
if [ "$num_error" != "0" ] 2>/dev/null; then
echo "Error. Detected $num_error error messages in EPC logs. We should finish without any error."
exit 1
fi
}
# check if build path has been passed # check if build path has been passed
if ([ ! $1 ]) if ([ ! $1 ])
then then
@ -151,6 +301,7 @@ enb_args="$build_path/../srsenb/enb.conf.example \
--enb_files.sib_config=$build_path/../srsenb/sib.conf.example \ --enb_files.sib_config=$build_path/../srsenb/sib.conf.example \
--enb_files.drb_config=$build_path/../srsenb/drb.conf.example \ --enb_files.drb_config=$build_path/../srsenb/drb.conf.example \
--rf.device_name=zmq \ --rf.device_name=zmq \
--log.all_level=info \
--expert.nof_phy_threads=1 \ --expert.nof_phy_threads=1 \
--expert.rrc_inactivity_timer=5000 \ --expert.rrc_inactivity_timer=5000 \
--enb.n_prb=$nof_prb \ --enb.n_prb=$nof_prb \
@ -160,6 +311,7 @@ ue_args="$build_path/../srsue/ue.conf.example \
--rf.device_name=zmq \ --rf.device_name=zmq \
--phy.nof_phy_threads=1 \ --phy.nof_phy_threads=1 \
--gw.netns=$ue_netns \ --gw.netns=$ue_netns \
--log.all_level=info \
--log.filename=./${nof_prb}prb_ue.log \ --log.filename=./${nof_prb}prb_ue.log \
--pcap.enable=true \ --pcap.enable=true \
--pcap.filename=./${nof_prb}prb_ue.pcap" --pcap.filename=./${nof_prb}prb_ue.pcap"
@ -253,8 +405,9 @@ mme_ip=$baseip".1"
echo "MME IP is $mme_ip" echo "MME IP is $mme_ip"
# show UE console trace # show UE/eNB console trace
screen -S srsue -X stuff "t$(printf \\r)" screen -S srsue -X stuff "t$(printf \\r)"
screen -S srsenb -X stuff "t$(printf \\r)"
# Run tests now # Run tests now
@ -276,44 +429,11 @@ sleep 3
# Stop all running LTE components and remove netns # Stop all running LTE components and remove netns
kill_lte kill_lte
# check ping results # check results
loss_rate=$(cat ./${nof_prb}prb_screenlog_ping_ul.log | grep -oP '\d+(?=% packet loss)') check_ping
if [ "$loss_rate" != "0" ] 2>/dev/null; then check_ue
echo "Error. Detected $loss_rate per-cent loss rate in UL ping." check_enb
exit 1 check_epc
fi
loss_rate=$(cat ./${nof_prb}prb_screenlog_ping_dl.log | grep -oP '\d+(?=% packet loss)')
if [ "$loss_rate" != "0" ] 2>/dev/null; then
echo "Error. Detected $loss_rate per-cent loss rate in DL ping."
exit 1
fi
# check that all log files have "Closing log" as last line
last_line=$(cat ./${nof_prb}prb_ue.log | tail -n1)
if [ "$last_line" != "Closing log" ]; then
echo "Error. srsUE didn't seem to have exited properly."
exit 1
fi
last_line=$(cat ./${nof_prb}prb_enb.log | tail -n1)
if [ "$last_line" != "Closing log" ]; then
echo "Error. srsENB didn't seem to have exited properly."
exit 1
fi
last_line=$(cat ./${nof_prb}prb_epc.log | tail -n1)
if [ "$last_line" != "Closing log" ]; then
echo "Error. srsEPC didn't seem to have exited properly."
exit 1
fi
# Check PRACH results
num_prach=$(cat ./${nof_prb}prb_screenlog_srsenb.log | grep RACH: | wc -l)
if [ "$num_prach" != "1" ] 2>/dev/null; then
echo "Error. Detected $num_prach PRACH(s). But should be only 1."
exit 1
fi
echo "All tests passed!" echo "All tests passed!"

Loading…
Cancel
Save