* Add can/Makefile

* can/filter-tests/Makefile cleanup:
  - Intall the files into the expect points

* run_ltp-can_tests.sh cleanup:
  - Use TCID, TST_TOTAL and TST_COUNT
  - Use test.sh
  - Use tst_require_root and tst_resm
  - Add setup and cleanup function

* tst-filter.c and tst-rcv-own-msgs.c some cleanup

Signed-off-by: Zeng Linggang <zenglg...@cn.fujitsu.com>
---
 testcases/network/can/Makefile                     |  27 ++++++
 testcases/network/can/filter-tests/Makefile        |  36 +++----
 .../network/can/filter-tests/run_ltp-can_tests.sh  | 103 +++++++++++++++------
 testcases/network/can/filter-tests/tst-filter.c    |  45 ++++-----
 .../network/can/filter-tests/tst-rcv-own-msgs.c    |  24 +++--
 5 files changed, 153 insertions(+), 82 deletions(-)
 create mode 100644 testcases/network/can/Makefile

diff --git a/testcases/network/can/Makefile b/testcases/network/can/Makefile
new file mode 100644
index 0000000..3174453
--- /dev/null
+++ b/testcases/network/can/Makefile
@@ -0,0 +1,27 @@
+#
+#    network/can test suite Makefile.
+#
+#    Copyright (c) 2014 Fujitsu Ltd.
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 2 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License along
+#    with this program; if not, write to the Free Software Foundation, Inc.,
+#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+top_srcdir             ?= ../../..
+
+include $(top_srcdir)/include/mk/env_pre.mk
+
+INSTALL_TARGETS                := *.sh
+
+include $(top_srcdir)/include/mk/generic_trunk_target.mk
diff --git a/testcases/network/can/filter-tests/Makefile 
b/testcases/network/can/filter-tests/Makefile
index c88f704..6a94741 100644
--- a/testcases/network/can/filter-tests/Makefile
+++ b/testcases/network/can/filter-tests/Makefile
@@ -1,24 +1,28 @@
 #
-#  $Id: Makefile,v 1.1 2009/03/02 15:33:55 subrata_modak Exp $
+#    Copyright (c) 2014 Fujitsu Ltd.
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 2 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License along
+#    with this program; if not, write to the Free Software Foundation, Inc.,
+#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 #
 #  Send feedback to <socketcan-us...@lists.berlios.de>
 
-CFLAGS    = -O2 -Wall -Wno-parentheses \
-       -fno-strict-aliasing \
-       -DETH_P_CAN=0x000C \
-       -DPF_CAN=29 \
-       -DAF_CAN=PF_CAN
-
-PROGRAMS =      tst-filter tst-rcv-own-msgs
-
-all: $(PROGRAMS)
+top_srcdir             ?= ../../../..
 
-install:
-       cp -f $(PROGRAMS) /usr/local/bin
+include $(top_srcdir)/include/mk/testcases.mk
 
-clean:
-       rm -f $(PROGRAMS)
+CPPFLAGS               += -DETH_P_CAN=0x000C -DPF_CAN=29 -DAF_CAN=PF_CAN
 
-distclean:
-       rm -f $(PROGRAMS) *~
+INSTALL_TARGETS                := *.sh
 
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/network/can/filter-tests/run_ltp-can_tests.sh 
b/testcases/network/can/filter-tests/run_ltp-can_tests.sh
index b955ec6..cd43875 100644
--- a/testcases/network/can/filter-tests/run_ltp-can_tests.sh
+++ b/testcases/network/can/filter-tests/run_ltp-can_tests.sh
@@ -14,44 +14,93 @@
 ## for more details.                                                          
##
 ##                                                                            
##
 ## You should have received a copy of the GNU General Public License          
##
-## along with this program;  if not, write to the Free Software               
##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
USA    ##
+## along with this program;  if not, write to the Free Software Foundation,   
##
+## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA           
##
 ##                                                                            
##
 
################################################################################
 
-if [ $(id -ru) -ne 0 ]; then
-     echo You need to be root to execute these tests
-     exit 1
-fi
+TCID="$1"
+TST_TOTAL=1
+export TST_COUNT
 
-# load needed CAN networklayer modules
-modprobe -f can
-modprobe -f can_raw
+. test.sh
 
-# ensure the vcan driver to perform the ECHO on driver level
-modprobe -r vcan
-modprobe -f vcan echo=1
+setup()
+{
+       tst_require_root
 
-VCAN=vcan0
+       # load needed CAN networklayer modules
+       modprobe can
+       ret=$?
+       if [ $ret -ne 0 ]; then
+               tst_brkm TCONF "modprobe can failed: ret - $ret"
+       fi
 
-# create virtual CAN device
-ip link add dev $VCAN type vcan || exit 1
-ifconfig $VCAN up
+       modprobe can_raw
+       ret=$?
+       if [ $ret -ne 0 ]; then
+               tst_brkm TCONF "modprobe can_raw failed: ret - $ret"
+       fi
 
-# check precondition for CAN frame flow test
-HAS_ECHO=`ip link show $VCAN | grep -c ECHO`
+       # ensure the vcan driver to perform the ECHO on driver level
+       modprobe -r vcan
+       ret=$?
+       if [ $ret -ne 0 ]; then
+               tst_brkm TCONF "modprobe -r vcan failed: ret - $ret"
+       fi
 
-if [ $HAS_ECHO -ne 1 ]
-then
-    exit 1
-fi
+       modprobe vcan echo=1
+       ret=$?
+       if [ $ret -ne 0 ]; then
+               tst_brkm TCONF "modprobe vcan echo=1 failed: ret - $ret"
+       fi
+
+       VCAN=vcan0
 
-# test of CAN filters on af_can.c
-./tst-filter $VCAN || exit 1
+       # create virtual CAN device
+       ip link add dev $VCAN type vcan
+       ret=$?
+       if [ $ret -ne 0 ]; then
+               tst_brkm TBROK
+                        "ip link add dev $VCAN type vcan failed: ret - $ret"
+       fi
 
-# test of CAN frame flow down to the netdevice and up again
-./tst-rcv-own-msgs $VCAN || exit 1
+       ip link set dev $VCAN up
+       ret=$?
+       if [ $ret -ne 0 ]; then
+               tst_brkm TBROK "ip link set dev $VCAN up failed: ret - $ret"
+       fi
 
-exit 0
+       # check precondition for CAN frame flow test
+       HAS_ECHO=`ip link show $VCAN | grep -c ECHO`
+       if [ $HAS_ECHO -ne 1 ]; then
+               tst_brkm TBROK "ECHO is not 1"
+       fi
+}
 
+cleanup()
+{
+       ip link set dev $VCAN down
+       ip link del dev $VCAN
+       modprobe -r vcan
+       modprobe -r can_raw
+       modprobe -r can
+}
+
+if [ $# -ne 1 ]; then
+       tst_brkm TBROK "Usage: $0 [can_filter | can_rcv_own_msgs]"
+fi
+
+setup
+TST_CLEANUP=cleanup
+
+"$1" "$VCAN"
+ret=$?
+
+if [ $ret -ne 0 ]; then
+       tst_resm TFAIL "Test $1 FAIL with exit number: $ret"
+else
+       tst_resm TPASS "Test $1 PASS"
+fi
 
+tst_exit
diff --git a/testcases/network/can/filter-tests/tst-filter.c 
b/testcases/network/can/filter-tests/tst-filter.c
index a4ecbbd..b24e339 100644
--- a/testcases/network/can/filter-tests/tst-filter.c
+++ b/testcases/network/can/filter-tests/tst-filter.c
@@ -1,8 +1,4 @@
 /*
- *  $Id: tst-filter.c 1263 2011-07-09 18:00:41Z hartkopp $
- */
-
-/*
  * tst-filter.c
  *
  * Copyright (c) 2011 Volkswagen Group Electronic Research
@@ -66,9 +62,8 @@
 #define TC 18                  /* # of testcases */
 
 const int rx_res[TC] = { 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1 
};
-const int rxbits_res[TC] =
-    { 4369, 4369, 4369, 4369, 17, 4352, 17, 4352, 257, 257, 4112, 4112, 1, 256,
-16, 4096, 1, 256 };
+const int rxbits_res[TC] = { 4369, 4369, 4369, 4369, 17, 4352, 17, 4352, 257,
+                            257, 4112, 4112, 1, 256, 16, 4096, 1, 256 };
 
 canid_t calc_id(int testcase)
 {
@@ -86,13 +81,12 @@ canid_t calc_mask(int testcase)
 {
        canid_t mask = CAN_SFF_MASK;
 
-       if (testcase > 15)
-               return (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG);
-
        if (testcase & 4)
                mask |= CAN_EFF_FLAG;
        if (testcase & 8)
                mask |= CAN_RTR_FLAG;
+       if (testcase > 15)
+               mask = (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG);
 
        return mask;
 }
@@ -119,7 +113,8 @@ int main(int argc, char **argv)
                return 1;
        }
 
-       if ((s = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) {
+       s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
+       if (s < 0) {
                perror("socket");
                return 1;
        }
@@ -149,9 +144,8 @@ int main(int argc, char **argv)
                setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER,
                           &rfilter, sizeof(rfilter));
 
-               printf
-                   ("testcase %2d filters : can_id = 0x%08X can_mask = 
0x%08X\n",
-                    testcase, rfilter.can_id, rfilter.can_mask);
+               printf("testcase %2d filters : can_id = 0x%08X can_mask = "
+                      "0x%08X\n", testcase, rfilter.can_id, rfilter.can_mask);
 
                printf("testcase %2d sending patterns ... ", testcase);
 
@@ -218,11 +212,9 @@ int main(int argc, char **argv)
                                }
 
                                /* test & calc rxbits */
-                               rxbitval =
-                                   1 <<
-                                   ((frame.
-                                     can_id & (CAN_EFF_FLAG | CAN_RTR_FLAG |
-                                               CAN_ERR_FLAG)) >> 28);
+                               rxbitval = 1 << ((frame.can_id &
+                                                (CAN_EFF_FLAG | CAN_RTR_FLAG |
+                                                 CAN_ERR_FLAG)) >> 28);
 
                                /* only receive a rxbitval once */
                                if ((rxbits & rxbitval) == rxbitval) {
@@ -234,22 +226,23 @@ int main(int argc, char **argv)
                                rxbits |= rxbitval;
                                rx++;
 
-                               printf
-                                   ("testcase %2d rx : can_id = 0x%08X rx = %d 
rxbits = %d\n",
-                                    testcase, frame.can_id, rx, rxbits);
+                               printf("testcase %2d rx : can_id = 0x%08X rx = "
+                                      "%d rxbits = %d\n", testcase,
+                                      frame.can_id, rx, rxbits);
                        }
                }
                /* rx timed out -> check the received results */
                if (rx_res[testcase] != rx) {
                        fprintf(stderr,
-                               "wrong rx value in testcase %d : %d (expected 
%d)\n",
-                               testcase, rx, rx_res[testcase]);
+                               "wrong rx value in testcase %d : %d (expected "
+                               "%d)\n", testcase, rx, rx_res[testcase]);
                        exit(1);
                }
                if (rxbits_res[testcase] != rxbits) {
                        fprintf(stderr,
-                               "wrong rxbits value in testcase %d : %d 
(expected %d)\n",
-                               testcase, rxbits, rxbits_res[testcase]);
+                               "wrong rxbits value in testcase %d : %d "
+                               "(expected %d)\n", testcase, rxbits,
+                               rxbits_res[testcase]);
                        exit(1);
                }
                printf("testcase %2d ok\n---\n", testcase);
diff --git a/testcases/network/can/filter-tests/tst-rcv-own-msgs.c 
b/testcases/network/can/filter-tests/tst-rcv-own-msgs.c
index 688ca3c..233bd66 100644
--- a/testcases/network/can/filter-tests/tst-rcv-own-msgs.c
+++ b/testcases/network/can/filter-tests/tst-rcv-own-msgs.c
@@ -1,8 +1,4 @@
 /*
- *  $Id: tst-rcv-own-msgs.c 1193 2010-08-09 14:00:21Z hartkopp $
- */
-
-/*
  * tst-rcv-own-msgs.c
  *
  * Copyright (c) 2010 Volkswagen Group Electronic Research
@@ -62,7 +58,7 @@
 #include <linux/can.h>
 #include <linux/can/raw.h>
 
-#define max(a,b) (a > b ? a : b)
+#define max(a, b) ((a) > (b) ? (a) : (b))
 
 struct rxs {
        int s;
@@ -141,13 +137,13 @@ struct rxs test_sockets(int s, int t, canid_t can_id)
 
 void setopts(int s, int loopback, int recv_own_msgs)
 {
-       setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK,
-                  &loopback, sizeof(loopback));
-       setsockopt(s, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS,
-                  &recv_own_msgs, sizeof(recv_own_msgs));
+       setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK, &loopback,
+                  sizeof(loopback));
+       setsockopt(s, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS, &recv_own_msgs,
+                  sizeof(recv_own_msgs));
 
-       printf("check loopback %d recv_own_msgs %d ... ",
-              loopback, recv_own_msgs);
+       printf("check loopback %d recv_own_msgs %d ... ", loopback,
+              recv_own_msgs);
 }
 
 int main(int argc, char **argv)
@@ -163,11 +159,13 @@ int main(int argc, char **argv)
                return 1;
        }
 
-       if ((s = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) {
+       s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
+       if (s < 0) {
                perror("socket");
                return 1;
        }
-       if ((t = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) {
+       t = socket(PF_CAN, SOCK_RAW, CAN_RAW);
+       if (t < 0) {
                perror("socket");
                return 1;
        }
-- 
1.9.3




------------------------------------------------------------------------------
Open source business process management suite built on Java and Eclipse
Turn processes into business applications with Bonita BPM Community Edition
Quickly connect people, data, and systems into organized workflows
Winner of BOSSIE, CODIE, OW2 and Gartner awards
http://p.sf.net/sfu/Bonitasoft
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to