From: Petr Vorel <pvorel@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2] uart: add uart testcase in kernel device-drivers
Date: Wed, 25 Mar 2020 16:24:18 +0100 [thread overview]
Message-ID: <20200325152418.GA23610@dell5510> (raw)
In-Reply-To: <20200324121742.7130-1-gengcixi@gmail.com>
Hi Cixi,
...
> +++ b/testcases/kernel/device-drivers/uart/serialcheck.sh
> @@ -0,0 +1,68 @@
> +#!/bin/sh
> +###############################################################################
> +#
Please avoid these '####...'
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
> +# Copyright (C) 2019, Unisoc Communications Inc.
> +#
> +# Test UART ports using git://git.breakpoint.cc/bigeasy/serialcheck.git
> +#
> +###############################################################################
> +
> +TST_TESTFUNC=do_test
> +TST_POS_ARGS=3
> +TST_USAGE=usage
> +TST_NEEDS_ROOT=1
> +TST_NEEDS_CMDS="serialcheck"
> +TST_NEEDS_CMDS="lsof"
> +TST_NEEDS_CMDS="dd"
Note, this is a normal shell variable, so you'd request only dd. You need to
use:
TST_NEEDS_CMDS="serialcheck lsof dd"
> +TST_NEEDS_TMPDIR=1
> +
> +. tst_test.sh
> +
> +usage()
> +{
> + echo "usage: ./${0} [-r UART_RATE] [-l LOOPS] [-h|k to enable HW flow control or loopback]"
> + exit 1
> +}
BTW, you use positional arguments, so this help is wrong.
IMHO it's better to use getopts parameters (positional parameters are rarely
used + use "k" as a parameter looks strange), but of course it's not a
mistake. If you want to keep them, it should be:
usage()
{
echo "usage: $0 {UART_RATE} {LOOPS} {h|k to enable HW flow control or loopback}"
}
The convention in unix/linux program is:
[ foo ] => foo is optional argument
{ bar } => bar is mandatory argument
> +
> +UART_RATE=$1
> +UART_LOOPS=$2
> +UART_HWFLOW=$3
> +
> +create_test_file()
> +{
> + temp_test_file=`mktemp`
We both Cyril and me mentioned that you don't need to use mktemp (+ it'd be
unnecessary dependency).
> + dd if=/dev/urandom of=$temp_test_file count=1 bs=$((UART_RATE / 2))
> +}
> +
> +test_serial()
> +{
> + create_test_file
> + { sleep 1; serialcheck -b $UART_RATE -d $1 -f $temp_test_file -l $UART_LOOPS -m t -${UART_HWFLOW}; }&
Cyril already mentioned the need to use proper locks instead of sleep.
> + PID=$!
> + serialcheck -b $UART_RATE -d $1 -f $temp_test_file -l $UART_LOOPS -m r -${UART_HWFLOW}
> + if [ $? ]; then
This is always true. Use either:
serialcheck -b $UART_RATE -d $1 -f $temp_test_file -l $UART_LOOPS -m r -${UART_HWFLOW}
if [ $? -eq 0 ]; then
...
or put the command itself into if:
if serialcheck -b $UART_RATE -d $1 -f $temp_test_file -l $UART_LOOPS -m r -${UART_HWFLOW}; then
...
> + kill -- -$PID 2>/dev/null
> + tst_res TFAIL "uart test failed"
> + else
> + tst_res TPASS "uart test passed"
> + fi
> + rm $temp_test_file
> +}
> +
> +do_test()
> +{
You re supposed to declare non-global variables:
local i
> + for i in /sys/class/tty/*/uartclk ;do
> + PORT=`echo $i |cut -d '/' -f 5`
> + # Activate port in case it will be initialized only when startup
> + echo "UART TESTING">${PORT} 2>/dev/null
> + if [ `cat /sys/class/tty/${PORT}/uartclk` -ne 0 ]; then
> + lsof | grep "/dev/${PORT}" &> /dev/null || PORT_TO_TEST="/dev/${PORT}"
> + tst_res TINFO "start test on ${PORT_TO_TEST} ${UART_RATE}"
> + test_serial ${PORT_TO_TEST}
> + fi
> + done
> +}
> +
> +tst_run
Kind regards,
Petr
prev parent reply other threads:[~2020-03-25 15:24 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-24 12:17 [LTP] [PATCH v2] uart: add uart testcase in kernel device-drivers gengcixi
2020-03-25 10:28 ` Cyril Hrubis
2020-03-25 10:33 ` Cyril Hrubis
2020-03-25 15:28 ` Petr Vorel
2020-03-26 6:35 ` Cixi Geng
2020-03-26 7:05 ` Petr Vorel
2020-03-27 2:44 ` Cixi Geng
2020-03-27 14:13 ` Cyril Hrubis
2020-03-25 15:24 ` Petr Vorel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200325152418.GA23610@dell5510 \
--to=pvorel@suse.cz \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox